Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   Problem bei der Positionsauswertung der Maus (https://www.delphipraxis.net/120567-problem-bei-der-positionsauswertung-der-maus.html)

chrio89 12. Sep 2008 21:30


Problem bei der Positionsauswertung der Maus
 
Hi ich hab ein kleines Problem

in meinem Grafikprogramm habe ich ein Bitmap in ein Image geladen
Durch Klicken auf das Image wird jeweils die Position des Cursors gespeichert.
Da man mit GetCursoPpos ja nicht die Position der Maus bezogen zum Image erhält berechne ich diese folgendermaßen:

Delphi-Quellcode:
EckX:=Mouse.CursorPos.X;
EckY:=Mouse.CursorPos.Y;
EckX:=EckX-Form1.Frame21.Left;
EckY:=EckY-Form1.Frame21.Top;
h:=EckX/Form1.Frame21.Image1.Width;
Eckx:=round(h*Bildbreite);
h:=Ecky/Form1.Frame21.Image1.Height;
EckY:=round(h*Bildhoehe);
Dabei tritt nun folgendes Problem auf: die X-Position is jeweils richtig, aber die Y-Position ist verschoben, genauer gesagt liegen die berechneten Punkte weiter Unten als die jeweiligen Stellen, auf die ich geklickt habe.

Meine Vermutung ist jetzt, dass es durch die Titelleiste verschoben wird. Das Formular wird immer als wsMaximized ausgeführt, aber die Mausposition bezieht sich ja auf den Bildschirm?!.

(kann Jemand diese Vermutung bestätigen/wiederlegen???)

Nun habe ich festgestellt, dass wenn ich die Position um +15 Pixel nach Oben verschiebe, das Problem nicht mehr auftaucht.

->kann mir Jemand eine Lösung anbieten,damit die Positionen überinstimmen?

Lösungsidden:
1. Bestimmen der Höhe der Titelleiste(sofern meine Vermutung stimmt)
> Wie kann ich einfach die Höhe der Titelleiste bestimmen um sie dazusurechnen?

2 Gibt es eine Möglichkeit, die Mausposition nur auf das Formular(ohne Titelleiste) oder gar auf das Image zu beziehen?

taaktaak 12. Sep 2008 21:36

Re: Problem bei der Positionsauswertung der Maus
 
Mit Image1.ScreenToClient() vielleicht?

marabu 13. Sep 2008 08:02

Re: Problem bei der Positionsauswertung der Maus
 
Moin,

beim Ereignis OnMouseDown() der Image-Komponente werden doch schon die Client-Koordinaten mitgeteilt ...

Grüße vom marabu

chrio89 14. Sep 2008 07:01

Re: Problem bei der Positionsauswertung der Maus
 
Danke Marabu ;) hab das jetzt auf OnMouseDown geändert und andere Kleinigkeiten verbessert und alles funzt perfekt


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 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