API函数CreatePolygonRgn建立一个区域,然后FillRgn以某种颜色填充该区域。Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, _
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, _
ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, _
ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) _
As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal _
hObject As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As LongConst ALTERNATE = 1
Const WINDING = 2Dim hRgn As LongPrivate Sub Command1_Click()
Dim xx(4) As POINTAPI
Dim lB As Long
Dim lOld As Long
xx(0).X = 0: xx(0).Y = 0
xx(1).X = 50: xx(1).Y = 0
xx(2).X = 50: xx(2).Y = 50
xx(3).X = 0: xx(3).Y = 50
xx(4).X = 5: xx(4).Y = 25
'建立不规则区域
hRgn = CreatePolygonRgn(xx(0), 5, ALTERNATE)
If hRgn <> 0 Then
lB = CreateSolidBrush(RGB(255, 0, 0))
'填充不规则区域
Debug.Print FillRgn(Picture1.hdc, hRgn, lB)
End If
End Sub
X As Long
Y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End TypePrivate Declare Function CreatePolygonRgn Lib "gdi32" (lpPoint As POINTAPI, _
ByVal nCount As Long, ByVal nPolyFillMode As Long) As Long
Private Declare Function FillRgn Lib "gdi32" (ByVal hdc As Long, _
ByVal hRgn As Long, ByVal hBrush As Long) As Long
Private Declare Function PtInRegion Lib "gdi32" (ByVal hRgn As Long, _
ByVal X As Long, ByVal Y As Long) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) _
As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal _
hObject As Long) As Long
Private Declare Function GetLastError Lib "kernel32" () As LongConst ALTERNATE = 1
Const WINDING = 2Dim hRgn As LongPrivate Sub Command1_Click()
Dim xx(4) As POINTAPI
Dim lB As Long
Dim lOld As Long
xx(0).X = 0: xx(0).Y = 0
xx(1).X = 50: xx(1).Y = 0
xx(2).X = 50: xx(2).Y = 50
xx(3).X = 0: xx(3).Y = 50
xx(4).X = 5: xx(4).Y = 25
'建立不规则区域
hRgn = CreatePolygonRgn(xx(0), 5, ALTERNATE)
If hRgn <> 0 Then
lB = CreateSolidBrush(RGB(255, 0, 0))
'填充不规则区域
Debug.Print FillRgn(Picture1.hdc, hRgn, lB)
End If
End Sub
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货