![]() |
Delphi-Version: 10.3 Rio
Mausclick Position auf einem Bitmap auslesen
Hallo zusammen,
ich versuche gerade die Position der Maus bei dem Click auf ein Bitmap auszulesen, leider ohne Erfolg. Ich habe versucht ein Panel "drunter zu legen" um mit dem OnClick Event die Position auszulesen, jedoch wie bereits erwartet: Das Bitmap "versperrt" den Click auf das Panel. Gibt es eine andere Möglichkeit die Position der Maus auszulesen, wenn man an auf ein Bitmap klickt? Das Bitmap wird normalerweise in meinem Programm auf einem PageControl kreiert. Vielen Dank |
AW: Mausclick Position auf einem Bitmap auslesen
Eine Bitmap kann man nicht klicken, da sie kein Control ist. Meinst Du vielleicht ein TImage? Oder zeichnest Du sie selbst auf den Canvas eines Controls?
|
AW: Mausclick Position auf einem Bitmap auslesen
Ich erstelle zur Laufzeit ein TBitmap. Ich greife dann auf Canvas zu und zeichne so ein Grid. Mein Ziel ist es nun herauszufinden wo ich auf dem Grid hingeklickt habe um Werte von der geklickten Stelle auszugeben.
PS: Ich nutze die Komponente von ![]() |
AW: Mausclick Position auf einem Bitmap auslesen
Auf welchen Canvas greifst Du zu? Der muss ja zu irgendeinem Control gehören, da sollte sich im Normalfall auch ein OnClick-Event finden.
|
AW: Mausclick Position auf einem Bitmap auslesen
Auf die Canvas von Bitmap :D Vielleicht versteh ich auch nicht so ganz was Du meinst, aber hier mal ein Codeausschnitt.
Delphi-Quellcode:
_Bmp := TBitmap.Create;
... _Bmp.Canvas.Pen.color := _GridColor; _Bmp.Canvas.Pen.Width := 1; _Bmp.Canvas.Brush.color := Color; _Bmp.Canvas.Pen.Width := 1; ... |
AW: Mausclick Position auf einem Bitmap auslesen
Poste doch ein wenig Code...
Gemäss deiner Beschreibung vermute ich, dass du im OnMouseDown deines Formulars die Mauskoordinaten abfangen kannst (dabei natürlich berücksichtigen musst, dass es Formularkoordinanten sind)... ...oder natürlich über ApplicationEvents (oder Überschreiben von WndProc). Einfacher wäre es doch bestimmt, wenn du du in deinem PageControl auf dem TabSheet auf welchem du die Bitmap anzeigen willst ein Image einfügst und deine Bitmap in diesem Image ablegst. Vorteile: Die Bitmap muss nicht neu gemalt werden bei einem OnPaint und Image kennt OnMouseDown. |
AW: Mausclick Position auf einem Bitmap auslesen
Wo wird das Bitmap angezeigt? Wenn du einfach nur ein Bitmap erstellst und darauf zeichnest dann siehst du im Programm rein gar nichts.
Du musst das Bitmap einem Image o.ä. zuweisen oder es von Hand auf ein Canvas eines Controls zeichnen. Wie schon gesagt wurde: Ein Bitmap ist genausowenig ein Control wie ein String ein Control ist und man kann dementsprechend nicht drauf klicken. Du kannst allerdings auf das Control klicken auf dem das Bitmap gezeichnet wird. Also: Was machst du mit dem Bitmap nachdem du drauf zeichnest? |
AW: Mausclick Position auf einem Bitmap auslesen
Jupp, das woruf du malst, davon die MouseEvents verwenden.
Willst du die Position nicht umrechnen (Offset X:Y der Zeichenaktion nicht abziehen), dann nimm eine TPaintBox und dort hast dann auch deine eigenen MouseEvents nur für dieses Bitmap. Oder TImage, dort kannst im Image.Picture.Bitmap auch dessen TBitmap-Instanz benutzen. (wird auf Picture.Bitmap zugegriffen dann wird automatisch in Picture.Graphic eine TBitmap erstellt) |
AW: Mausclick Position auf einem Bitmap auslesen
![]() ![]() Ich male bei solchen vorhaben auf ein (entweder mit oder ohne border) Panel und berechne alles nur über Prozente anstelle absoluter Pixelangaben, so ist es einigermaßen Skalierungssicher. |
AW: Mausclick Position auf einem Bitmap auslesen
Ohne Control keine Control-Methoden. Aber da der Code anscheinend Top Secret ist, warte ich erst einmal ab.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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 by Thomas Breitkreuz