如果是
中空的 Shape,直接用 VB6
内建的函数 : PSet, Line 即可达成
不知道你的意思是 顶点与线 上色,还是要连点连起来的多边形内部也要上色
如果
内部需要上色,可以用几个 API 来达成
网路查了一下才发现有许多种方法可以达成,甚至有人都做好了模组可以直接套用
我以别人的程式码为基础,作了一个 "画出任意 正多边形" 的专案,可以参考看看
主要是参考
http://tw.knowledge.yahoo.com/quest...d=1610020405915 的回答内容
只是座标方面 (P().X = .... P().Y = .....) 要修改一下
这是我做的一个小程式:
主要的程式码如下: (Sub DrawRegularShape)DrawRegularShape 的参数: 图片物件, 几正边形, 圆形的长度, 初始的角度, 圆形中心的 X, 圆形中心的 Y, 颜色复制程式
Public Sub DrawRegularShape(ByRef Pic As Object, ByVal EdgesCt As Long, ByVal CircleR As Long, ByVal IntAngle As Double, _
ByVal CenterX As Long, ByVal CenterY As Long, ByVal FilledColor As Long)
Dim P(100) As POINTAPI, hBrush As Long, hRgn As Long
Dim i As Long
Dim tempX As Long, tempY As Long, Angle As Double
'Convert Angle Into 'Rad'
IntAngle = IntAngle / 180 * Pi
'----------- Specify Points ----------
For i = 0 To EdgesCt - 1
Angle = ((Pi * 2 / EdgesCt) * i) + IntAngle + (Pi / 2)
tempX = CenterX + (CircleR * Cos(Angle))
tempY = CenterY - (CircleR * Sin(Angle))
P(i).X = tempX
P(i).Y = tempY
' '[Debug - Draw Pien Point]
' Pic.DrawWidth = 3
' Pic.PSet (tempX, tempY)
Next i
Do While i <= UBound(P)
P(i).X = P(i - 1).X
P(i).Y = P(i - 1).Y
i = i + 1
Loop
'--------------------------------------
hBrush = CreateSolidBrush(FilledColor)
hRgn = CreatePolygonRgn(P(0), UBound(P), ALTERNATE)
If hRgn Then FillRgn Pic.hdc, hRgn, hBrush
DeleteObject hRgn
' '[Debug - Draw Central Point]
' Pic.DrawWidth = 5
' Pic.PSet (CenterX, CenterY)
End Sub
这是座标的解析,如果搞不懂以上程式码运作原理的话,看这张图容易了解:
这是
"正" 多边形 的示范,如果要不规则形
只需将以上的 For ... Next 区块移除,改成 指定 座标 各是多少,或许用 文字档来载入 等方式.....
此 VB6 专案 "Draw A Polygon" + 程式 下载: