![]() |
Ein Bild in einzelne klickbaren Teile aufteilen???
Der Titel ist ganz schön blöd und missverständlich, aber etwas Besseres ist mir nicht eingefallen.
Außer ein Bild auf die Form zu setzen und ein paar Icons in ein TImageList zu laden habe ich mit Grafiken in Delphi noch nie etwas gemacht. Die Experten hier mögen mir nicht böse sein, wenn ich mein Problem nicht eindeutig genug formuliere. Ich habe ein mit Photoshop gezeichnetes Bild im PNG-Format (den kann ich natürlich in jede andere Format konvertieren). Bei diesem Bild handelt es sich um eine blaue Zig-Zag-Shape, die mit dünnen Zig-Zag-Linien in mehrere ungleiche Teile aufgeteilt ist. Nun muss ich dieses Bild auf die Form setzen und die eizelnen Teile zu den Schaltflächen machen, so dass jedes Teil klickbar ist und beim MouseEnter die Farbe ändert. So etwas ähnliches habe ich in einem Programm gesehen. Dort war eine Deutschland-Karte auf Bundesländer aufgeteilt und jedes Bundesland war eine Schaltfläche. Theoretisch, wenn es eine entsprechende Komponente gäbe, könnte ich mit Photoshop mein Bild in einzelne Bilder zerteilen, von jedem mehrere Varianten (normal, hot, disabled) abspeichern und dann mit so was wie ShapeButton laden. So eine Komponente finde ich aber nicht. Wie würdet Ihr die Aufgabe lösen? Gibt es doch eine Komponente dafür? |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Ich würde im OnMouseMove und OnMouseDown die Koordinaten abfragen und entsprechend reagieren.
|
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Vielen Dank für die schnelle Antwort!
Das war auch das Erste, was ich mir vorgestellt habe. Doch das Bild ist wirklich kein Rechteck, Ellipse oder sonnst irgendeine primitive geometrische Form, deren Koordinaten man relativ einfach errechnen könnte. Es handelt sich wirklich um eine unregelmässige zig-zag Zechnung. Selbstverständlich gibt es Möglichkeiten, die Koordinaten zu errechnen, aber bei allem Selbstbewusstsein bezweifle ich, dass ich das ohne Hilfe dritter Personen oder Tools schaffe. Wie soll ich hier die Koordinaten errechnen? Und wenn ich die Koordinaten doch errechnet habe, wie verändere ich graphisch die einzelnen Teile eines Bildes? |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Kopiere das Bild und färbe die einzelnen Bereiche in jeweils einer eigenen Farbe.
Du solltest die Farbtiefe auf 256 oder 16 Farben reduzieren. Du hast dann zwei gleich grosse Bilder; das Orginal und eine Farbmaske. Lade beide Bilder in dein Programm und zeige aber nur das Orginal an. Wenn der Benutzer ins Bild klickt, holst du die Farbe aus dem Farbmaskenbild (Property Pixels[]). Anhand dieser Farbe ist klar, in welchen Bereich geklickt wurde. |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Hört sich interessant an. Soll ich dabei TImage benutzen oder irgendwas anderes?
|
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Zitat:
TPicture ist unsichtbar und quasi nur ein Kontainer für ein Bild. Die Variable für das Picture kommt in den Bereich "Private" des Formulars und sollte im OnCreate-Event des Formulars erzeugt werden.
Delphi-Quellcode:
Im OnDestroy-Event wieder freigeben (FFarbMaske.Free).
FFarbMaske := TPicture.Create;
Laden mit LoadFromFile() an beliebiger Stelle. |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
OK, und wie andere ich nun die Farbe des Bild-Teiles, auf das geklickt wurde?
|
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Zitat:
![]() Gruß aus den Bergen Günter |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Oder
![]() |
Re: Ein Bild in einzelne klickbaren Teile aufteilen???
Zitat:
Gruß aus den Bergen Günter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:42 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