Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - viele Fragen zu Image-Feldern...


hein_17 - Mo 18.08.03 10:05
Titel: viele Fragen zu Image-Feldern...
Hallo! Ich habe mal ein paar Fragen zu Image-Feldern und deren Benutzung:
1. Wie wird bei einem Mausklick in ein Image die Position der Maus in diesem Image ausgelesen? (mit x- und y-Koordinaten)

2. Wie kann ich in einem Image Text erzeugen, der die Hintergrundfarbe zulässt? z.B. in einer Status-Anzeige, die am Anfang weiß ist, und entsprechend dem Fortschritt sich blau färbt und gleichzeitig den entsprechenden Fortschritt in Prozent abbildet, da soll der Text immer die Hintergrundfarbe behalten, auch wenn noch ein Teil weiß und einer schon blau ist...

3. Kann ich irgendwie ein Bild erzeugen und dann für ein image nur festlegen, welcher teil dieses Bildes angezeigt werden soll?

Das wars erstmal - manche Formulierungen sind wohl etwas komisch :oops:, aber ich hoffe, ihr könnt mir trotzdem helfen...

Thx im Vorraus!


Terra23 - Mo 18.08.03 10:56

Hallo.

Zu 1) GetCursorPos() sollte dir helfen (Suche in: Delphi-Forum, Delphi-Library GETCURSORPOS)
Zu 2) Wenn du ein Label auf das Image setzt und beim Label die Eigenschaft Transparent auf True stellst, paßt es sich dem Bild an. Die Fortschrittsanzeige heißt als Komponente ProgressBar.
Zu 3) Wenn du ein Image lädst, das größer ist als die Höhe und Breite des Bildes (und Stretch auf False läßt), siehst du nur ein Teil des Bildes (leider immer von der oberen linken Ecke an; das, was du möchtest, sollte aber auch einfach zu handeln sein).


hein_17 - Mo 18.08.03 13:20

Danke erstmal für die Antwort.
Ich habe aber immer noch ein Problem:
Bei Getcursorpos() bekomme ich nun die Mauskoordinaten, aber das is wohl absolut zum gesamten Screen gesehen - wie lese ich aber die Koordinaten innerhalb des Imagefeldes aus :?:


Aya - Mo 18.08.03 13:25

Hi,

du kannst anstelle von OnClick auch einfach das OnMouseDown Event benutzen, denn dort werden dir die MausKoordinaten für das bild gleich mitübergeben.

Ansonstne schau dir mal ScreenToClient() an, damit rechnest du deine Mauskoordinaten auf das Image um.

zu 2.) Du kannst auch einfach beim deinen Canvas.Brush.Style auf bsClear setzen und dann mit Canvas.TextOut() den Text transparent auf das Image zeichnen.

Au'revoir,
Aya~