AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia TLine - Canvas an Line ausrichten
Thema durchsuchen
Ansicht
Themen-Optionen

TLine - Canvas an Line ausrichten

Ein Thema von Bjoerk · begonnen am 6. Mär 2013 · letzter Beitrag vom 9. Mär 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von stahli
stahli

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

AW: TLine - Canvas an Line ausrichten

  Alt 7. Mär 2013, 14:03
Ich würde der Komponente eigene Propertys zuweisen:
X1, Y1 ... für Point1
X2, Y2 ... für Point2
LW ... für Linienbreite
LA für LineAlign

Dann kannst Du Left, Top, With und Height die Komponente selbst berechnen lassen (veranlasst durch die Setter der neuen Propertys):

Left := Min(X1, X2) - (LW div 2);
Top := Min(Y1, Y2) - (LW div 2);
Width := Max(X1, X2) - Min(X1, X2) + (LW div 2);
Height := Max(Y1, Y2) - Min(Y1, Y2) + (LW div 2);

(so ins unreine...)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: TLine - Canvas an Line ausrichten

  Alt 7. Mär 2013, 17:59
Ja Stahli, das ist für hier wirklich sehr sehr viel einfacher. Dann wird zur Designzeit auch gleich alles richtig angezeigt.

Das einzige was ich jetzt noch hab ist: Width und Height sind ja vom UrUrVorfahren. Wie kriegt denn meine Komponete mit, daß die sich geändert haben. Ich muß ja dann X1/Y1 und X2/Y2 entsprechend anpassen?

Delphi-Quellcode:
procedure TLine.SetX1(const Value: integer);
begin
  FX1 := Value;
  Left := FX1 - OffSet;
end;

procedure TLine.SetX2(const Value: integer);
begin
  FX2 := Value;
  Width := FX2 - FX1 + OffSet + OffSet;
end;

procedure TLine.SetY1(const Value: integer);
begin
  FY1 := Value;
  Top := FY1 - OffSet;
end;

procedure TLine.SetY2(const Value: integer);
begin
  FY2 := Value;
  Height := FY2 - FY1 + OffSet + OffSet;
end;

function TLine.OffSet: integer;
begin
  Result := FPen.Width div 2;
end;
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: TLine - Canvas an Line ausrichten

  Alt 7. Mär 2013, 18:16
Die Setter dürften virtuell sein, aber ich würde einfach Resize überschreiben (und prüfen, ob die Änderung von deinen neuen Eigenschaften kommt oder nicht).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: TLine - Canvas an Line ausrichten

  Alt 7. Mär 2013, 20:20
Die Setter dürften virtuell sein, aber ich würde einfach Resize überschreiben.
Left, Top, Width und Height sind fest drin aber TControl hat ja das angesprochene OnResize-Event.

(und prüfen, ob die Änderung von deinen neuen Eigenschaften kommt oder nicht).
Genau, da winkt ja der Stackowerflow. Kann ich irgendwie den Sender auswerten oder brauch' ich ein eigenes Flag?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

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

AW: TLine - Canvas an Line ausrichten

  Alt 7. Mär 2013, 21:24
Flag.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#16

AW: TLine - Canvas an Line ausrichten

  Alt 9. Mär 2013, 12:10
Ich habs soweit fertig. Was ich bissl blöd find, daß wenn man z.B. eine Line von 0,0 nach 1000,1000 zeichnet, das Width und Height der Komponente sehr groß werden. Auch schlecht für MouseEnter, MoueLeave, MouseMove usw.. Besser fände ich es, wenn man das Canvas um die Line herum bauen könnte (schräges Rect). Man bräuchte dann auch kein LineAlign mehr. Wie macht denn sowas? Muß man dann erst mal was TControl ableiten und ein eignes Canvas hineinfriemeln?
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#17

AW: TLine - Canvas an Line ausrichten

  Alt 9. Mär 2013, 13:11
So funktionieren Komponenten nicht. Wenn Du nur eines Deiner Lineshapes benötigst kannst Du eigene Events einbauen die im Mousemove auf Kollision mit Deiner Linie prüfen. Da ich aber davon ausgehe dass Du mehrere benötigen wirst, ist allein durch die Überlagerung der Komponenten damit Schluss. Bei Wincontrols könnte man sich durch das definieren von Regions eine Weile über Wasser halten. Letztendlich wird es IMHO aber eher auf eine Komponente hinauslaufen die beliebig viele "Objekte" wie Linien/Kreise etc. darstellen und verwalten kann und die Kollisionsprüfung im MouseMove über die Objektdefinitionen vornimmt.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#18

AW: TLine - Canvas an Line ausrichten

  Alt 9. Mär 2013, 16:09
Bummi, du hast ja sowas von Recht!! Dieses ewige BringToFront SendToBack hab ich überhaupt nicht bedacht. Das kann ich unmöglich bringen. Damit ist dieses Konzept letztlich gestorben.

Offengestanden waren mir Shapes eh viel zu langsam. Und jetzt auch von TWInControl ableiten und Regionen zuweisen? Ich werd ganz klassisch eine ScrollBox nehemen und eine Paintbox rein. Eine Objectlist muß intern eh mitlaufen, dann kann ich auch jedem Object eine Region zuweisen. Sollten mehrere Regionen gefunden werden, kann man die Elemente ja vorher in einem PopUp zur Auswahl stellen.

Gruß
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#19

AW: TLine - Canvas an Line ausrichten

  Alt 9. Mär 2013, 16:51
Hat zwar nicht direkt mit Pfeilen zu tun, ist aber auch nur eine Komponente ....
Angehängte Dateien
Dateityp: zip CDS.zip (2,10 MB, 6x aufgerufen)
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:17 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