Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi krumme Pfeile (https://www.delphipraxis.net/107893-krumme-pfeile.html)

jjep 4. Feb 2008 11:34


krumme Pfeile
 
Hallo zusammen

Ich möchte mit Delphi ein Zustandsdiagramm anzeigen. Der Benutzer sollte in der Lage sein die Pfeile, die die Zustandsblöcke verbinden, verziehen zu können und sie so richten, dass kein Pfeil ein Block schneidet.

Mein Problem ist es nun die krummen Linien darzustellen, so dass sie möglichst rund sind. Ich hab mal ausprobiert mit Polyline die Linien darzustellen, aber die Berechnung der einzelnen Punkte ist recht kompliziert :(

Ich habe gesehen, dass man mit Canvas Kreisbögen darstellen kann, diese Funktion ist aber eher ungeeignet, da ich die Start und Endpunkte des Bogen fix bräuchte.

Hat jemand zufälligerweise eine gute Idee oder ein Tipp der mich weiter bringt?

Gruss jjep

rawsoul 4. Feb 2008 11:53

Re: krumme Pfeile
 
Hast du zufällig ein kleines Bild parat, wie das Resultat aussehen soll? Ich kann mir unter der Erklärung nichts genaues vorstellen.

jjep 4. Feb 2008 12:24

Re: krumme Pfeile
 
Hier einmal ein Link zu einem Zustandsdiagramm: Zustandsdiagramm

Dies möchte ich mit Delphi darstellen.

Mein Problem ist, dass ich nicht weiss wie ich die krummen Pfeile darstellen soll und frage jetzt ob jemand eine Idee hätte, wie ich die Pfeile darstellen könnte.

OregonGhost 4. Feb 2008 12:30

Re: krumme Pfeile
 
Die Windows-GDI hat einige Funktionen zum Zeichnen von Bézier-Kurven. TCanvas ist ja im Endeffekt ein Wrapper um einen GDI-Gerätekontext, hat er nicht auch entsprechende Methoden? Die Windows-Funktionen heißen PolyBezier und PolyBezierTo, wenn dir das bei der Suche hilft.

jjep 4. Feb 2008 14:16

Re: krumme Pfeile
 
Ja hat extrem geholfen, danke vielmals.

Ich hab die Funktion irgenwie noch angeschaut aber konnte nichts damit Anfange. Ich wusste nicht das diese Kurven Beziers hiessen.

Danke

freak4fun 4. Feb 2008 14:24

Re: krumme Pfeile
 
Kannst du mal bitte schrieben wie du es gelöst hast? :?

jjep 4. Feb 2008 14:43

Re: krumme Pfeile
 
Zitat:

Kannst du mal bitte schrieben wie du es gelöst hast?
Wie OregonGhost gesagt hat, mit der PolyBezier methode von Canvas.

Delphi-Quellcode:
procedure PolyBezier(var Points: array of TPoint);
Wikipedia erklärte mir was genau Bezierkurven sind. Bezierkurven

Und Im Array lisstet man dann vier Punkte auf. Der erste ist der Anfangspunkt, der 2. und 3. sind Steuerpunkte und der vierte ist der Endpunkt. Et Voila... :witch:

Da ich aber keine Kubische Bezierkurve brauche, speichere ich den selben Punkt für die beiden Steuerpunkte.

Gruss Jjep

freak4fun 4. Feb 2008 15:25

Re: krumme Pfeile
 
Ok, hatte die Methode ohne Canvas versucht. Danke dir. :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz