记住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
三角形区域,使用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
Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" (ByVal lpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long
Declare Function Polyline Lib "gdi32" Alias "Polyline" (ByVal hdc As Long, lpPoint As POINTAPI, ByVal nCount As Long) As Long
Declare Function PolylineTo Lib "gdi32" Alias "PolylineTo" (ByVal hdc As Long, lppt As POINTAPI, ByVal cCount As Long) As Long
说明
用当前画笔描绘一系列线段。使用PolylineTo函数时,当前位置会设为最后一条线段的终点。它不会由Polyline函数改动
返回值
Long,非零表示成功,零表示失败
参数表
参数 类型及说明
hdc Long,要在其中绘图的设备场景
lpPoint POINTAPI,nCount POINTAPI结构数组中的第一个POINTAPI结构
nCount Long,lpPoint数组中的点数。会从第一个点到第二个点画一条线,以次类推
http://www.csdn.net/expert/topic/719/719202.xml?temp=.223324
还有就是可以控制机箱小喇叭