Private Function GetSkinMask(Bitmap As PictureBox, TransColor As Long) As Long
Dim NowPosStaus As Boolean, i As String
Dim RgnTemp1 As Long, RgnTemp2 As Long
Dim StartPos As Long, EndPos As Long
Dim NowPosX As Long, NowPosY As Long
For NowPosY = 0 To Bitmap.ScaleHeight - 1
StartPos = -1: EndPos = -1: NowPosStaus = True
For NowPosX = 0 To Bitmap.ScaleWidth - 1
If Bitmap.Point(NowPosX, NowPosY) <> TransColor Then
If NowPosStaus Then StartPos = NowPosX: NowPosStaus = False
Else
If Not (NowPosStaus) Then
EndPos = NowPosX
If StartPos <> EndPos And StartPos > 0 Then
If RgnTemp1 = 0 Then
RgnTemp1 = CreateRectRgn(StartPos + StartX, NowPosY + StartY, EndPos + StartX, NowPosY + StartY + 1)
Else
RgnTemp2 = CreateRectRgn(StartPos + StartX, NowPosY + StartY, EndPos + StartX, NowPosY + StartY + 1)
If RgnTemp2 <> 0 Then Dummy = CombineRgn(RgnTemp1, RgnTemp1, RgnTemp2, RGN_OR)
DeleteObject (RgnTemp2)
End If
NowPosStaus = True
End If
End If
End If
Next NowPosX
Next NowPosY
GetSkinMask = RgnTemp1
Declare Function CreateEllipticRgn Lib "gdi32" Alias "CreateEllipticRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function CreatePolygonRgn Lib "gdi32" Alias "CreatePolygonRgn" (lpPoint As POINTAPI, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function CreatePolyPolygonRgn Lib "gdi32" Alias "CreatePolyPolygonRgn" (lpPoint As POINTAPI, lpPolyCounts As Long, ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Declare Function CreateRectRgn Lib "gdi32" Alias "CreateRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long
Declare Function CreateRoundRectRgn Lib "gdi32" Alias "CreateRoundRectRgn" (ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal Y3 As Long) As Long
Declare Function CombineRgn Lib "gdi32" Alias "CombineRgn" (ByVal hDestRgn As Long, ByVal hSrcRgn1 As Long, ByVal hSrcRgn2 As Long, ByVal nCombineMode As Long) As Long
Declare Function CombineTransform Lib "gdi32" Alias "CombineTransform" (lpxformResult As xform, lpxform1 As xform, lpxform2 As xform) As Long
Declare Function SetWindowRgn Lib "user32" Alias "SetWindowRgn" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Public Const RGN_AND = 1
Public Const RGN_OR = 2
Public Const RGN_XOR = 3
Public Const RGN_DIFF = 4
Public Const RGN_COPY = 5
Public Const RGN_MAX = RGN_COPY
Public Const RGN_MIN = RGN_AND