Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: Kreis/Linie zwischen 2 TButtons

  Alt 7. Okt 2020, 09:26
Verstehe ich das richtig, dass die Linien dann "automatisch" angepasst/gezeichnet werden
Falls ja, gibt es da irgendwo Beispiele zu finden?
Ja, wenn Du die Verbindungen in eine grafische Komponente kapselst und die Art der Darstellung als Eigenschaft vorgibst.
Im Grunde genau wie ein TPanel oder TBevel.
Da hast Du z.B. eine Eigenschaft BevelOuter, die vorgibt, wie der Rahmen zu zeichnen ist.
Wenn Du die Komponente in der Größe änderst oder verschiebst, wird diese und das Formular entsprechend neu gezeichnet.

Du könntest also eine Komponente schreiben, die die Linien oder Kreise nach bestimmten Vorgaben immer gemäß der Komponentengröße passen zeichnet.


ABER:

Wenn man Dein Bild ansieht, wird das wohl eher nicht so günstig sein.
Du müsstest dann wohl mehrere Komponenten miteinander überlagern (Kreis, Linie1, Linie2, Linie3). Oder Du musst eine recht komplexe Komponente erstellen, die alle diese Figuren zusammen darstellt.
Dann wird es aber schwierig, wenn die Kinder in unterschiedlicher Höhe oder Winkel zu den Eltern ausgerichtet sind.


ALSO:

Ich würde die Verbindungen in den Hintergrund zeichnen.

Dafür könntest Du eine Panel und Paintbox oder Image nutzen, die Du in die Scrollbox legst. Auf das Panel dann auch Deine Buttons.
Dann brauchst Du Du Dich auch um das Scrollen usw nicht kümmern. Einfach nur die Größe des Panels einstellen und dann passt das.

Mit dem Erstellen der Linien in ein Bitmap und dann kopieren in den Canvas kann man Flackern verhindern, allerdings auch nur wenn man mit Threads arbeitet.
Zusätzlich hast Du die Verbindungen dann aber auch schon als Bild vorliegen, das Du dann ggf. leichter drucken kannst.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli ( 7. Okt 2020 um 12:53 Uhr)
  Mit Zitat antworten Zitat