如果是
中空的 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" + 程式 下載: