![]() |
Koordinatenproblem mit TImage
Hallo!
Im OnMouseMove des Images steht folgender Code:
Delphi-Quellcode:
Jetzt möchte ich einen Kreis an die Stelle zeichnen, das geschieht allerdings durch einen Timer, dessen Interval auf 200 gesetzt ist. Damit er weiß wo die Maus gerade ist, benutzt er die X bzw. YPos:
var
XPos, YPos: Integer; {...} OnMousedown(...); begin Xpos := X; YPos := Y; end;
Delphi-Quellcode:
Aber irgendwie zeichnet er die Kreise immer zu weit rechts und zu weit unten :gruebel: . Der Abstand zwischen Mauszeiger und dem gezeichneten Kreis verkleinert sich, umso näher ich dem linken oberen Rand komme.
Feld.Canvas.Ellipse(XPos-2, YPos-2, XPos+2, YPos+2); //Feld ist der Name des Images
Jemand 'ne Idee :?: |
Re: Koordinatenproblem mit TImage
Was steht denn im OnMouseDown? Wird da der Timer aktiviert? Weil ansonsten geht das bei mir
|
Re: Koordinatenproblem mit TImage
Der Timer ist die ganze Zeit aktiv, im MouseDown wird nur ein Boolischer Wert auf True gesetzt (im MouseUp wird er auf False gesetzt). Immer wenn dieser Wert True ist, zeichnet der Timer mit den Koordinaten, die vom OnMouseMove auf XPos bzw. YPos gesetzt wurden.
Liegt es daran, dass das Image alClient und das Formular wsMaximized ist? |
Re: Koordinatenproblem mit TImage
Ich weiß jetzt woran's lag! Ich hatte vergessen, dass ich Strech auf true gestellt hatte, weil die Bilder sonst nicht den ganzen Bildschirm einnehmen.
Die Bilder sind 800x600 Pixel groß, der bildschirm aber 1024x768. Ich habe das ganze jetzt so gelöst:
Delphi-Quellcode:
Sorry, da hab' ich wohl nicht richtig aufgepasst!
Feld.Picture.Bitmap.Canvas.Ellipse(Trunc(XPos/1.28)-2, Trunc(YPos/1.28)-2, Trunc(XPos/1.28)+2, Trunc(YPos/1.28)+2);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 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