![]() |
getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezogen?)
Hallo, ich habe in meinen Programm die Canvas in meinen TImage in 9 Teile aufgeteilt (3x3 mit je 100x100 Pixeln).
Nun wollte ich wissen wenn man auf diese Canvas klickt, in welchen Bereich der Klick war. Ich habe die Prozedur getCursorPos() und die Funktion Mouse.CursorPos.x/y gefunden. Diese geben ja immer die Position gesehen vom gesamten Bildschirm an. Deswegen habe ich nun folgenden Quelltext geschrieben:
Code:
geht es auch einfacher?
...
getCursorPos(pos); x := Pos.X; x := x - Form1.Left; x := x - (Form1.Width - ClientWidth); y := Pos.y; y := y - Form1.Top; y := y - (Form1.Height - ClientHeight); ... Und noch was, ich habe mit einem Timer immer in 4 Labels die aktuellen x und y Werte einmal mit getCursorPos und einmal mit Mouse.CursorPos ausgelesen, dort standen auch immer die gleichen Werte, aber wenn ich für den Code oben Mouse.CursorPos verwendete bekam ich völlig andere (für mich nicht nachvollziebare) Werte, woran liegt das? |
Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
Zitat:
|
Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
nun ja....versuch´s so:
in einem OnMouseUp event schreibst du so etwas: posx := (X-a) div width_f; posy := (Y-a) div width_f; wo width_f deine beliebige Breute ist (nämlich 100) und a ist 1/2 des abstandes zwitschen 2 Rect´s also noch einmal: --a--|---------------width_f---------------|--a----a--|---------------width_f---------------| und so weiter.... das gilt für die y-Axe genauso. und somit weist du wo du geklickt has :o |
Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
Danke werde es mal ausprobieren.
|
Re: getCursorPos() und Mouse.CursorPos.x/y (auf Canvas bezog
\\edit: Nö, war falsch :oops:
|
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