Mauskoordinaten über TImage abfragen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
LazGreenhorn
Beiträge: 7
Registriert: Do 7. Feb 2013, 20:01

Mauskoordinaten über TImage abfragen

Beitrag von LazGreenhorn »

Hallo mal wieder:-)

Ich bin gerade auf ein Problem gestoßen. Und zwar möchte ich Freihandlinien auf einem Image zeichnen lassen.
Also Mausklick - zeichnet Linie während Maus bewegt wird - Maus loslassen - Ende Linie.

Meine Frage: Wie kann ich die Koordinaten des Cursors z.B. in den Variablen X und Y speichern? Ich habe es schon mit GetCursorPos versucht, aber das funktioniert nicht...:-(

Kann miir da jemand helfen...? Dankeschön!

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Mauskoordinaten über TImage abfragen

Beitrag von Socke »

LazGreenhorn hat geschrieben:Meine Frage: Wie kann ich die Koordinaten des Cursors z.B. in den Variablen X und Y speichern? Ich habe es schon mit GetCursorPos versucht, aber das funktioniert nicht...:-(
Im Event OnMouseMove() werden doch die Maus-Koordinaten übergeben. Kannst du die nicht nutzen?

Es gibt in der Unit Forms die Variable Mouse, über die man auf die Maus zugreifen kann: Mouse.CursorPos liefert die absolute Position; da musst das nur noch auf dein Image herunter rechnen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: Mauskoordinaten über TImage abfragen

Beitrag von pluto »

Nun das geht im Prinzip ganz einfach:
Bei OnMouseDown Speicherst du in zwei Variablen die X und Y Position ab z.b. in mx und my.
Dann zeichnest du von diesen Werten in onMouseMove bis zu den neuen Werten(Die im Event sind) eine Line.
Dann setzt du die alten Variablen mx und my neu auf x und y vom OnMouseMove.

Problem ist dabei, jedoch das neu Zeichnen. D.H. die Alten Linen werden sichtbar sein. D.H. du musst sie überzeichnen.
Ich finde gerade auf Anhieb leider kein Beispiel zum Thema. Aber es gibt sie. Zahlreich.
z.b. könntest du die alten Position überzeichnen, nur musst du den PenMode in Canvas.Pen ändern.

Das geht im Übrigen so auch bei allen anderen Figuren.
MFG
Michael Springwald

Antworten