'窗体背景图片为256色gif Public Sub SetWindowShape(hWnd As Long, Picture As Long, Optional TransColor As Byte = 1) '设置窗体皮肤 On Error Resume Next Dim bmByte() As Byte Dim X As Long, Y As Long Dim Rgn1 As Long, Rgn2 As Long Dim SPos As Long, EPos As Long Dim bm As BITMAP, R As RECT Dim WID As Long, HEI As Long '获取窗体背景图片尺寸 GetObjectAPI Picture, Len(bm), bm WID = bm.bmWidth HEI = bm.bmHeight ReDim bmByte(0 To WID, 0 To HEI) GetWindowRect hWnd, R R.Right = R.Left + WID R.Bottom = R.Top + HEI MoveWindow hWnd, R.Left, R.Top, R.Right, R.Bottom, 1 GetBitmapBits Picture, WID * HEI, bmByte(0, 0) '获取图像数组 If TransColor = vbNull Then TransColor = bmByte(0, 0) Rgn1 = CreateRectRgn(0, 0, WID, HEI) SetWindowRgn hWnd, Rgn1, True '设定窗体形状区域 Rgn1 = CreateRectRgn(0, 0, 0, 0) For Y = 0 To HEI - 1 '逐行扫描 For X = 0 To WID - 1 If bmByte(X, Y) <> TransColor Then Rgn2 = CreateRectRgn((X + 1) - 1, (Y + 1) - 1, (X + 1), (Y + 1)) CombineRgn Rgn1, Rgn1, Rgn2, 2 DeleteObject Rgn2 End If Next X Next Y SetWindowRgn hWnd, Rgn1, True '设定窗体形状区域 DeleteObject Rgn1 End Sub '判断鼠标移到标题上时再用别一图片
Public Sub SetWindowShape(hWnd As Long, Picture As Long, Optional TransColor As Byte = 1)
'设置窗体皮肤
On Error Resume Next
Dim bmByte() As Byte
Dim X As Long, Y As Long
Dim Rgn1 As Long, Rgn2 As Long
Dim SPos As Long, EPos As Long
Dim bm As BITMAP, R As RECT
Dim WID As Long, HEI As Long
'获取窗体背景图片尺寸
GetObjectAPI Picture, Len(bm), bm
WID = bm.bmWidth
HEI = bm.bmHeight
ReDim bmByte(0 To WID, 0 To HEI)
GetWindowRect hWnd, R
R.Right = R.Left + WID
R.Bottom = R.Top + HEI
MoveWindow hWnd, R.Left, R.Top, R.Right, R.Bottom, 1
GetBitmapBits Picture, WID * HEI, bmByte(0, 0) '获取图像数组
If TransColor = vbNull Then TransColor = bmByte(0, 0)
Rgn1 = CreateRectRgn(0, 0, WID, HEI)
SetWindowRgn hWnd, Rgn1, True '设定窗体形状区域
Rgn1 = CreateRectRgn(0, 0, 0, 0)
For Y = 0 To HEI - 1 '逐行扫描
For X = 0 To WID - 1
If bmByte(X, Y) <> TransColor Then
Rgn2 = CreateRectRgn((X + 1) - 1, (Y + 1) - 1, (X + 1), (Y + 1))
CombineRgn Rgn1, Rgn1, Rgn2, 2
DeleteObject Rgn2
End If
Next X
Next Y
SetWindowRgn hWnd, Rgn1, True '设定窗体形状区域
DeleteObject Rgn1
End Sub
'判断鼠标移到标题上时再用别一图片