Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bereiche in einem Bild als Schaltflächen nutzen (https://www.delphipraxis.net/109532-bereiche-einem-bild-als-schaltflaechen-nutzen.html)

Oracle 3. Mär 2008 10:13


Bereiche in einem Bild als Schaltflächen nutzen
 
Ich habe folgendes vor:
Ich habe ein Bild welches ähnlich aussieht wie dieses hier:

http://www.u-helmich.de/bio/stw/biok...lder/abb02.jpg

Nun will ich das der User in diesem Bild per Mausklick eines der Reagenzgläser auswählen kann.
Nach dem der User das Reagenzglas angeklickt hat, soll es sich rot verfärben, sodass sichtbar wird, welches er ausgewählt hat.
Daraufhin soll er auch noch weitere auswählen können. Klick er noch einmal auf ein bereits ausgewähltes Reagenzglas, so nimmt dieses wieder seine ursprüngliche Farbe an.
Dies soll für eine Messung dienen, und der User soll auf diese Weise intuitiv die zu Messenden Proben auswählen können.

Ich hoffe ihr könnt mir da helfen.

Vielen Dank schonmal im Vorraus :-D

sirius 3. Mär 2008 10:31

Re: Bereiche in einem Bild als Schaltflächen nutzen
 
Ein möglicher Ansatz wäre:
-eine Klasse von TCustomControl ableiten
-Überschreiben der Paint-Methode (darin immer das Bild, was in einem Bitmap gespeichert ist auf das Canvas kopieren)
-Überschreiben der Methode Click oder DblClick und nachsehen, wo die Mouse ist. Dementsprechend dann das Bitmap verändern.

Ob du jetzt für alle Reagenzgläser ein Control nimmst oder jedes Glas in einem separatem Control ist deiner Kreativität überlassen.

s-off 3. Mär 2008 10:31

Re: Bereiche in einem Bild als Schaltflächen nutzen
 
Hallo,

schau Dir doch mal das an.

marabu 3. Mär 2008 10:34

Re: Bereiche in einem Bild als Schaltflächen nutzen
 
Hallo,

unterteile dein Image rechnerisch in acht vertikale Streifen. Jedes Rechteck verkleinerst du mittels InflateRect() so, dass es ganz innerhalb eines Reagenzglases liegt. Speichere die entstehenden Rechtecke in einem Array und prüfe beim Klicken auf das Bild mit PtInRect(), ob ein Reagenzglas angeklickt wurde.

Grüße vom marabu

Oracle 3. Mär 2008 13:59

Re: Bereiche in einem Bild als Schaltflächen nutzen
 
Ich hab mich jetzt auf TMPRegionImage gestürzt. Das finde ich auch echt genial.
Habe nur ein Problem. Wenn der User hier mehrere Regionen anwählen möchte muss er die Shifttaste gedrückt halten.
Ich möchte dieses Verhalten aber ohne zusätzliches Drücken der Shifttaste haben. wie kann ich dem Control eine gedrückte Shifttaste vorgaukeln?

Oracle 3. Mär 2008 14:14

Re: Bereiche in einem Bild als Schaltflächen nutzen
 
Ich habs raus einfach beim OnEnterRegion
Delphi-Quellcode:
keybd_event(VK_LShift, 0, 0, 0);
und bei OnLeaveRegion

Delphi-Quellcode:
keybd_event(VK_LShift, 0, KEYEVENTF_KEYUP, 0);
einfügen. :)


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