![]() |
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 |
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.
|
Re: krumme Pfeile
Hier einmal ein Link zu einem 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. |
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.
|
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 |
Re: krumme Pfeile
Kannst du mal bitte schrieben wie du es gelöst hast? :?
|
Re: krumme Pfeile
Zitat:
Delphi-Quellcode:
Wikipedia erklärte mir was genau Bezierkurven sind.
procedure PolyBezier(var Points: array of TPoint);
![]() 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 |
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