| |
VB.NET - FortgeschritteneDrawing2d.Path vereinen | | | Autor: met | Datum: 02.11.16 13:14 |
| Hallo,
kann man irgendwie 2 Path-Objekte (Polygone) miteinander vereinen?
ich müsste mehrere Polygone (mit Geraden und Bögen) miteinander vereinen und mit dem Ergebnis (Polygon) weiter arbeiten.
mein 1. Versuch war dieser...
Dim myGraphics As Graphics
Dim myPath As New System.Drawing.Drawing2D.GraphicsPath()
Dim myPath2 As New System.Drawing.Drawing2D.GraphicsPath()
Dim myRegion As Region
Dim myRegion2 As Region
'return the current form as a drawing surface
myGraphics = Me.CreateGraphics 'Graphics.FromHwnd(hwnd:=ActiveForm(
' ).Handle)
'create the first path and region
myPath.StartFigure()
myPath.AddRectangle(rect:=New Rectangle(x:=50, y:=50, Width:=50, _
Height:=20))
myRegion = New Region(path:=myPath)
'create the first path and region
myPath2.StartFigure()
Dim myRec As New Rectangle(x:=35, y:=45, Width:=50, Height:=30)
myPath2.AddEllipse(rect:=myRec)
myRegion2 = New Region(path:=myPath2)
'add the paths together
myRegion.Union(region:=myRegion2)
'fill the region
myGraphics.FillRegion(brush:=New SolidBrush(Color.Black), _
region:=myRegion) Allerdings ist myRegion.data kein Polygon mehr
Kennt jemand eine Lösung?
Folgende Ansätze habe ich bereits ausprobiert:
http://www.angusj.com/delphi/clipper/documentation/Docs/Overview/_Body.htm ist leider nichts, da alle Bögen in kleine Linien umgewandelt werden
Danke im Voraus für eure Anregungen | |
Re: Drawing2d.Path vereinen | | | Autor: Manfred X | Datum: 03.11.16 07:05 |
| Hallo!
Was verstehst Du unter einem Polygon mit Geraden und Bögen?
Ich vermute, du mußt Ellipsen hilfsweise als Polygone
im Graphik-Pfad definieren, wenn Du mit der Region-Klasse in
der gewünschten Weise arbeiten willst (= Bögen werden als eine
Abfolge kurzer Geraden realisiert). | |
Re: Drawing2d.Path vereinen | | | Autor: met | Datum: 03.11.16 07:27 |
| Hi, danke für die Antwort...
Ich habe z.B. gerundete Rechtecke die übereinander liegen. Von all diesen benötige ich die Outline und muss aber noch die Radien auslesen können.
Das geht leider bei lauter Geraden nicht mehr | |
Re: Drawing2d.Path vereinen | | | Autor: Manfred X | Datum: 03.11.16 16:10 |
| Hallo!
Deine Flächen sind anscheinend begrenzt durch eine Abfolge von
Abschnitten von Geraden und Abschnitten von Ellipsen.
Es handelt sich offenbar nicht um Vielecke.
Du benötigst eine Klasse, die Flächen durch solche Abfolgen verwaltet.
Dabei ist ein Geradenabschnitt durch Anfangs- und Endpunkt (x1,y1, x2,y2)
definiert, für Ellipsenabschnitte sind zusätzlich die beiden Brennpunkte
erforderlich.
Um die so gegebenen Flächen zu "fusionieren" benötigt diese Klasse
drei Hilfsmethoden zur Bestimmung von Schnittpunkten zwischen
- zwei Geradenabschnitten
- zwei Ellipsenabschnitten
- einem Geraden- und einem Ellipsenbabschnitt
Durch diese Schnittpunkte sind die Anfangs- und Endpunkte der
neuen Abschnittsabfolge der fusionierten Fläche gegeben.
Vermutlich gibt es dafür bereits Net-Bibliotheken.
Ich kenne leider keine. | |
Paths auslesen | | | Autor: VB3-Guru | Datum: 26.12.16 17:49 |
| Du musst die Informationen aus dem Path auslesen. Der Pfad besteht aus Geraden und Bezier-Kurven. Der Krümmungsradius einer abgerundeten Ecke steckt also in den Parametern der Bezier-Handles (Länge, Position).
Du darfst den Path natürlich nicht vorher in einem Polygon fixieren (hierbei gehen die Bezier-Parameter flöten).
Um mehrere Pfade zusammenzufügen, kannst du sie entweder per Grafikbefehl in einen neuen Path schreiben oder du zerlegst die Pfade in ihre Bestandteile und fügst sie rein rechnerisch ´zusammen. Für Letzeres musst du den Aufbau von Paths natürlich genau kennen (ist nicht soo schwer - ist nur ne Liste von Geraden oder Polylines und Bezier-Kurven).
lg, VB3-Guru | |
Re: Paths auslesen | | | Autor: met | Datum: 26.12.16 20:52 |
| Hallo, danke für die Antwort.
Hast du evtl. ein kleines Beispiel für mich? | |
Re: Paths auslesen | | | Autor: VB3-Guru | Datum: 26.12.16 21:55 |
| Ein Beispiel hab ich nur in VB6. Aber die Paths in Vb.Net sind genauso aufgebaut.
Hier ein Wenig MSDN-Lektüre:
https://msdn.microsoft.com/de-de/library/system.drawing.drawing2d.graphicspath_methods(v=vs.110).aspx
https://msdn.microsoft.com/de-de/library/system.drawing.drawing2d.graphicspath(v=vs.110).aspx
Ich glaube du suchst das hier:
https://msdn.microsoft.com/de-de/library/system.drawing.drawing2d.graphicspath.addpath(v=vs.110).aspx
Irgendwo gabs da auch was zu Join Paths, also Zusammenfügen von Paths, find das aber gerade nicht.
lg, vb3-Guru | |
Re: Paths auslesen | | | Autor: met | Datum: 07.01.17 22:40 |
| Hi, danke für die antworten...
Addpath ist gut aber mit Join finde ich leider nix, nur als Region (union) und das sind dann nur kleine Linien und keine Bögen mehr 😣 | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
TOP! Unser Nr. 1
Neu! sevDataGrid 3.0
Mehrspaltige Listen, mit oder ohne DB-Anbindung. Autom. Sortierung, Editieren von Spalteninhalten oder das interaktive Hinzufügen von Datenzeilen sind ebenso möglich wie das Erstellen eines Web-Reports. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|