AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

krumme Pfeile

Ein Thema von jjep · begonnen am 4. Feb 2008 · letzter Beitrag vom 4. Feb 2008
Antwort Antwort
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#1

krumme Pfeile

  Alt 4. Feb 2008, 12:34
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
  Mit Zitat antworten Zitat
Benutzerbild von rawsoul
rawsoul

Registriert seit: 29. Okt 2006
Ort: Düsseldorf
249 Beiträge
 
Delphi 2005 Personal
 
#2

Re: krumme Pfeile

  Alt 4. Feb 2008, 12:53
Hast du zufällig ein kleines Bild parat, wie das Resultat aussehen soll? Ich kann mir unter der Erklärung nichts genaues vorstellen.
Frank Dumont
  Mit Zitat antworten Zitat
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#3

Re: krumme Pfeile

  Alt 4. Feb 2008, 13:24
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.
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#4

Re: krumme Pfeile

  Alt 4. Feb 2008, 13:30
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#5

Re: krumme Pfeile

  Alt 4. Feb 2008, 15:16
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
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

Re: krumme Pfeile

  Alt 4. Feb 2008, 15:24
Kannst du mal bitte schrieben wie du es gelöst hast?
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
jjep

Registriert seit: 19. Jun 2007
Ort: Wettingen CH
78 Beiträge
 
#7

Re: krumme Pfeile

  Alt 4. Feb 2008, 15:43
Zitat:
Kannst du mal bitte schrieben wie du es gelöst hast?
Wie OregonGhost gesagt hat, mit der PolyBezier methode von Canvas.

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...

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

Gruss Jjep
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#8

Re: krumme Pfeile

  Alt 4. Feb 2008, 16:25
Ok, hatte die Methode ohne Canvas versucht. Danke dir.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz