我的三角形是闭合区域,我也设了填充类型,可是怎么不能自动填充呢? 希望大家教我。该三角形是用三次Line画出来的。 记住3个点的坐标,利用API函数CreatePolygonRgn根据坐标建立 三角形区域,使用API函数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
'建立不规则区域 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
用“Polygon”就行了!Polygon VB声明 Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long 说明 描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充 返回值 Long,非零表示成功,零表示失败。会设置GetLastError 参数表 参数 类型及说明 hdc Long,用于描绘的设备场景 lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构 nCount Long,多边形的总点数(顶点数) 注解 GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充
用“Polygon”就行了!Polygon VB声明 Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long 说明 描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充 返回值 Long,非零表示成功,零表示失败。会设置GetLastError 参数表 参数 类型及说明 hdc Long,用于描绘的设备场景 lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构 nCount Long,多边形的总点数(顶点数) 注解 GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充
用FillRgn去填充这个3角型
希望大家教我。该三角形是用三次Line画出来的。
记住3个点的坐标,利用API函数CreatePolygonRgn根据坐标建立
三角形区域,使用API函数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
Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
说明
描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,用于描绘的设备场景
lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构
nCount Long,多边形的总点数(顶点数)
注解
GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充
Declare Function Polygon Lib "gdi32" Alias "Polygon" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
说明
描绘一个多边形,由两点或三点的任意系列构成。windows会将最后一个点与第一个点连接起来,从而封闭多边形。多边形的边框用当前选定的画笔描绘,多边形用当前选定的刷子填充
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数表
参数 类型及说明
hdc Long,用于描绘的设备场景
lpPoint POINTAPI,在nCount POINTAPI结构数组中的第一个POINTAPI结构
nCount Long,多边形的总点数(顶点数)
注解
GetPolyFillMode 和 SetPolyFillMode 函数决定了如何在多边形内部填充