FillPolygon mit Löchern

Ich möchte eine "Füllung" erstellen, die das Innere eines Polygons ausfüllt, das mithilfe einer Punktliste erstellt wurde, aber in der Lage ist, seine Löcher zu entfernen.

Mein alter Code:

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

Es wird einfach ein Polygon gefüllt, das durch die Kontur der Punkte in der Liste erstellt wird.

Wie kann ich das Polygon füllen, aber die Löcher darin ausschließen (von denen ich weiß, dass sie sich darin befinden, habe ich getestet):

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

Kann ich etwas verwenden, das bereits erstellt wurde? Kann ich irgendwie das ursprüngliche Polygon zeichnen und die Löcher entfernen? Was wäre der beste Ansatz?

Was habe ich versucht - Beispiel: Ich habe Folgendes getan:

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

Das ist nicht so schlimm ... es schließt die inneren Polygone aus, aber es zieht auch einen Streifen "leer" zwischen die Konturen. Also, ich denke es funktioniert nicht.

Vielen Dank.

Bearbeiten: Bild hinzufügen:

Die Kontur wird als Liste von Punkten ("Punkte") angegeben, die Löcher als Liste von Listen ("Löcher"). Das Bild auf der rechten Seite zeigt eine grobe Zeichnung der Linienschwaden, die ich erhalte (obwohl die Löcher und Konturen keine gemeinsamen Punkte haben) - die Linien ändern sich, wenn ich das Bild bewege.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage