Einzelnen Beitrag anzeigen

chrio89

Registriert seit: 11. Sep 2008
Ort: Erfurt
29 Beiträge
 
Delphi 7 Personal
 
#1

Problem bei der Positionsauswertung der Maus

  Alt 12. Sep 2008, 21:30
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?
  Mit Zitat antworten Zitat