AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Mausclick Position auf einem Bitmap auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Mausclick Position auf einem Bitmap auslesen

Ein Thema von zobien123 · begonnen am 28. Jan 2020 · letzter Beitrag vom 28. Jan 2020
Antwort Antwort
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#1

Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 11:42
Delphi-Version: 10.3 Rio
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
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!

Geändert von zobien123 (28. Jan 2020 um 11:44 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 11:48
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?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 11:54
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 https://torry.net/authorsmore.php?id=6603 (Regression Analysis Graph) um einen Graph zu Zeichnen, da ich dies gern ohne TChart o.ä. von Delphi ausprobieren möchte.
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!

Geändert von zobien123 (28. Jan 2020 um 11:59 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 12:07
Auf welchen Canvas greifst Du zu? Der muss ja zu irgendeinem Control gehören, da sollte sich im Normalfall auch ein OnClick-Event finden.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
zobien123

Registriert seit: 3. Mär 2017
Ort: Öhringen
94 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 12:19
Auf die Canvas von Bitmap 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;
...
Jörn
Linux wird nie das meistinstallierte Betriebssystem sein, wenn man bedenkt, wie oft man Windows neu installieren muss!
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
760 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 12:29
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.
Michael Gasser

Geändert von Michael II (28. Jan 2020 um 12:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 12:31
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?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#8

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 13:10
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 14:12
ClientToScreen <-> ScreenToClient nennen sich die beiden Hauptmethoden die ich einsetze um absolute Positionen zu bestimmen/erhalten.
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

AW: Mausclick Position auf einem Bitmap auslesen

  Alt 28. Jan 2020, 17:49
Ohne Control keine Control-Methoden. Aber da der Code anscheinend Top Secret ist, warte ich erst einmal ab.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz