AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt
Thema durchsuchen
Ansicht
Themen-Optionen

Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt

Ein Thema von Bemi · begonnen am 6. Jan 2024 · letzter Beitrag vom 7. Jan 2024
Antwort Antwort
Bemi

Registriert seit: 17. Dez 2022
Ort: Eckental
13 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt

  Alt 6. Jan 2024, 22:45
Hallo nochmal,

stellt euch einfach ein Blatt Papier vor, auf das so ziemlich genau in die Mitte ein Bild hin kommen soll. Ich lege also irgendwas als Beispiel auf das Blatt Papier und schiebe es so lange hin und her, bis es optisch passt. Dann nehme ich ein Lineal und lese die cm und mm ab... Sowas geht ja nicht am PC.


Damit ich meine Koordinaten für z.B. ein Canvas.Rectangular(x1, y1, x2, y2) bekomme,
hatte ich im Designer auf ein TForm, ein TShape auf die (für mich) passende Stelle gelegt und im Objektinspektor die Positionsdaten gelesen.

Diese hatte ich dann als Grundlage für die Position meines Canvas Objektes genommen. Das Shape wird nur für die Position genommen und kommt sofort wieder weg!


Nur lag dieses Canvas Objekt an einer ganz anderen Stelle als das Shape!

Mir geht es nur um die Frage, warum die Position beim Canvas Objekt ganz wo anders ist. Die Koordinaten passen nicht. In ein und derselben TForm!


Der Code im angehängten Bild ist etwa so:

Canvas.Brush.Color := clYellow;
Canvas.Brush.Style := bsSolid;

// Set the border color
Canvas.Pen.Color := clBlue;
Canvas.Pen.Width := 3;
Canvas.Pen.Style := psSolid;
x1 := 369; y1 := 170; x2 := 630; y2 := 431; // x2 := left + width, y2 := top + height (shape vom Objektinspektor)

R := Rect(x1, y1, x2, y2);
Canvas.Rectangle(R);


// 2 Linien durchkreuzen das Rechteck/Quadrat

Canvas.MoveTo(x1, y1);
Canvas.LineTo(x2, y2);

Canvas.MoveTo(x1, y2);
Canvas.LineTo(x2, y1);

Im Anhang simd zwei Screenshots: der erste zeigt, wie es wird, wenn ich die Koordinaten vom Platzhalter "Shape" nehme.
Im zweiten, wenn ich es selber herausfinde, und mich mühsam annähere. Genauso sollte es ja nicht sein! Nix RAD. Das ist wie KC Basic vor 35 Jahren.
Angehängte Grafiken
Dateityp: jpg das gelbe ist das rectangle.jpg (66,6 KB, 34x aufgerufen)
Dateityp: jpg so soll es werden.jpg (75,4 KB, 17x aufgerufen)
Michael

Geändert von Bemi ( 7. Jan 2024 um 08:22 Uhr) Grund: unerklärlich
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
724 Beiträge
 
Delphi 12 Athens
 
#2

AW: Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt

  Alt 7. Jan 2024, 11:23
Hallo nochmal,

Nix RAD. Das ist wie KC Basic vor 35 Jahren.
Das liegt nur daran, dass Du die Sache völlig falsch angehst. Plaziere anstelle des TShapes eine TPaintbox auf das form und zeichne dann ausschließlich im Handler für den OnPaint-Event der Paintbox, auf den Canvas der Paintbox, nicht dem des Forms. Die Koordinaten sind dann relativ zur oberen linken Ecke der Paintbox, völlig unabhängig von der Position der Paintbox auf dem Form. Du brauchst also nicht irgendwelche Koordinaten aus dem Objektinspektor umzurechnen, da mußt Du nur die Paintbox wie gewünscht plazieren und die Größe anpassen wie nötig.

In der VCL ist die Position eines Controls (alle Abkömmlinge von TControl) relativ zur client area des Parents des Controls; d.h. der Punkt (0,0) für Left und Top des Controls ist die linke obere Ecke der client area des Parents und nicht Left und Top des Parents!
Peter Below
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt

  Alt 7. Jan 2024, 11:38
Kann es sein, dass du die Bildschirmskalierung auf einem anderen Wert als 100% hast? Das kann dabei auch noch eine Rolle spielen. Aber peterbelow hat ja die Alternative TPaintBox noch einmal genauer erklärt. Das ist ohnehin sinnvoller.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Bemi

Registriert seit: 17. Dez 2022
Ort: Eckental
13 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Anfängerfrage: Unterschiedliche Koordinaten von TForm und Canvas Objekt

  Alt 7. Jan 2024, 11:41
Vielen Dank für die Hinweise. Ich muss es erstmal verinnerlichen. Und ausprobieren.

Danke. Thema kann geschlossen werden.



P.S. Danke jaenicke, das war's. Die Skalierung war auch auf 120% wegen meiner Augen. Das Alter...
Michael

Geändert von Bemi ( 7. Jan 2024 um 12:14 Uhr)
  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 11:39 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