Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pixeldifferenz zwischen Komponenten-Mitte und Mausposition (https://www.delphipraxis.net/96413-pixeldifferenz-zwischen-komponenten-mitte-und-mausposition.html)

moelski 24. Jul 2007 06:37


Pixeldifferenz zwischen Komponenten-Mitte und Mausposition
 
Moin !

Ich stehe gerade vollkommen auf dem Schlauch und auch die Suche hat mir noch nicht geholfen. Vermutlich suche ich aber auch bei diesem Thema mit falschen Begriffen.

Mein Problem: Ich will ein TChart mit dem Mausrad Zoomen. Das geht auch, aber eben nur aus der Mitte des Chart heraus. So nun müsste ich mal berechnen, wo denn die Maus aktuell steht und wie viele Pixel in X / Y Richtung das von meiner Chartmitte entfernt ist. Danach kann ich dann das ZoomRect neu berechnen. Soweit so gut ...

Nun liefert mir
Delphi-Quellcode:
Chart1MouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
ja die Mausposition beim "wheelen", aber eben Bildschirmbezogen. Ich kriege also die aktuelle Pixelkoordinate der Maus (vermutlich das selbe wie Mouse.CursorPos.x).

Meine Mitte des Charts kann ich auch recht einfach berechnen ..
Delphi-Quellcode:
Chart.Width / 2.
Aber wie kriege ich nun die Pixeldifferenz zwischen meinem Mauscursor und der Chartmitte heraus? Der Ursprung ist ja jeweils ein anderer. :gruebel:
Ich habs schon mal irgendwann gemacht / gelesen, aber ich komme im Moment nicht auf den Trichter. Bei dem ersten Stichwort machts vermutlich gleich *click* ...

DeddyH 24. Jul 2007 07:32

Re: Pixeldifferenz zwischen Komponenten-Mitte und Mauspositi
 
Ich habe TChart zwar noch nie benutzt, aber TChart.ScreenToClient sollte Dir die Mausposition relativ zum Chart selbst liefern. Somit wäre die Abweichung auf der X-Achse Chart.ScreenToClient(MousePos).X - Chart.Width div 2 (wenn ich keinen Denkfehler habe).

moelski 24. Jul 2007 08:01

Re: Pixeldifferenz zwischen Komponenten-Mitte und Mauspositi
 
Moin !

Delphi-Quellcode:
ScreenToClient
Ich habs gewusst. Das war irgendwas einfaches. Aber machmal kommt man irgendwie nich drauf. :wall:

Danke !!! :cheers:


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