VB如何实现不规则窗体

在窗体中放入一个pictures,图片背景是RGB255,0,0也就是红色的,要把图片的背景过滤掉,使窗体成为一个不规则窗体,如何实现?... 在窗体中放入一个pictures,图片背景是RGB 255,0,0也就是红色的,要把图片的背景过滤掉,使窗体成为一个不规则窗体,如何实现? 展开
 我来答
匿名用户
2013-10-18
展开全部
'要用两个API
SetLayeredWindowAttributes的功能:

'其中hwnd是透明窗体的句柄,crKey为颜色值,bAlpha是透明度,取值范围是[0,255],当小于5时,

'鼠标通信透明,大于或等于5时鼠标不透明,dwFlags是透明方式,可以取两个值:当取值为 &H2 时,

'crKey参数无效,bAlpha参数有效;当取值为 &H1 时,bAlpha参数有效而窗体中的所有颜色为crKey

'的地方将变为透明--这个功能很有用:我们不必再为建立不规则形状的窗体而调用一大堆区域分析、

'创建、合并函数了,只需指定透明处的颜色值即可,哈哈哈哈!请看具体代码。

'代码:
一个部分透明窗体
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long

Private Sub Form_Load()

SetWindowLong hwnd, (-20), &H80000

SetLayeredWindowAttributes Me.hwnd, vbRed, 5, &H1
End Sub
匿名用户
2013-10-18
展开全部
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function SetLayeredWindowAttributes Lib "user32" (ByVal hwnd As Long, ByVal crKey As Long, ByVal bAlpha As Byte, ByVal dwFlags As Long) As Long
Private Const WS_EX_LAYERED = &H80000 Private Const GWL_EXSTYLE = (-20) Private Const LWA_ALPHA = &H2 Private Const LWA_COLORKEY = &H1 Private Sub Form_Load()   Dim rtn As Long   rtn = GetWindowLong(hwnd, GWL_EXSTYLE)   rtn = rtn Or WS_EX_LAYERED   SetWindowLong hwnd, GWL_EXSTYLE, rtn   SetLayeredWindowAttributes hwnd, RGB(255, 0, 0), 0, LWA_ALPHA Or LWA_COLORKEYEnd Sub 去除窗体内所有RGB(255, 0, 0)的颜色.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式