我想創建一個填充物,填充使用點列表創建的多邊形的內部,但能夠移除它的孔洞。帶孔洞的填充多邊形
我的舊代碼:
Private Sub DrawSomething(ByVal points as List(of Point), _
ByVal myBrush As System.Drawing.Brush, _
ByVal myGraphics As System.Drawing.Graphics)
myGraphics.FillPolygon(myBrush, points)
End Sub
它只是填充在列表中的點的輪廓創造了一個多邊形。
我怎樣才能填補多邊形,但不包括在它的孔(這是我知道的都在裏面,我已經測試):
Private Sub DrawSomething(ByVal points as List(of Point), _
ByVal holes as List(of List(of Point)), _
ByVal myBrush As System.Drawing.Brush, _
ByVal myGraphics As System.Drawing.Graphics)
' fill the contour created by points, excluding the contours created by holes
End Sub
有什麼我可以使用,已經被創造出來的?我能以某種方式繪製原始多邊形並移除這些孔嗎?最好的方法是什麼?
有什麼我試過 - 例如:我也做了以下內容:
Private Sub DrawSomething(ByVal points as List(of Point), _
ByVal holes as List(of List(of Point)), _
ByVal myBrush As System.Drawing.Brush, _
ByVal myGraphics As System.Drawing.Graphics)
Dim myGraphicsPath As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath(Drawing2D.FillMode.Winding)
myGraphicsPath.AddLines(points)
Dim myRegion As System.Drawing.Region = New System.Drawing.Region(myGraphicsPath)
Dim otherGraphicsPath As Drawing2D.GraphicsPath = New Drawing2D.GraphicsPath(Drawing2D.FillMode.Winding)
ForEach otherPoints as List(of Point) in holes
otherGraphicsPath.AddLines(otherPoints)
Next
myRegion.Exclude(otherGraphicsPath)
myGraphics.FillRegion(myBrush, myRegion)
End Sub
這是沒有那麼糟糕...它排除了內部的多邊形,但它也借鑑之間的「空」一大片輪廓。所以,我猜這是行不通的。
謝謝。
編輯:添加圖片:
輪廓被給定爲點的列表(「點」),孔作爲列表的列表(「孔」)。右邊的圖片對我得到的線條有粗略的描述(即使孔和輪廓沒有共同點) - 線條隨着我移動圖像而改變。
不知道我明白問題所在。你不能只是再次繪製多邊形沒有洞? – LarsTech 2013-02-25 23:01:27
這就是我想要的。繪製多邊形,沒有洞。多邊形內有孔的事實是必不可少的信息。所以我不能把它們掩蓋起來。理論上我有所有的信息 - 我只是不知道如何正確繪製它。 – Thalia 2013-02-25 23:10:28