Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Ein Bild in einzelne klickbaren Teile aufteilen??? (https://www.delphipraxis.net/143149-ein-bild-einzelne-klickbaren-teile-aufteilen.html)

romber 10. Nov 2009 22:34


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?

Luckie 10. Nov 2009 22:43

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Ich würde im OnMouseMove und OnMouseDown die Koordinaten abfragen und entsprechend reagieren.

romber 10. Nov 2009 22:54

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?

sx2008 10. Nov 2009 23:19

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.

romber 10. Nov 2009 23:35

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Hört sich interessant an. Soll ich dabei TImage benutzen oder irgendwas anderes?

sx2008 11. Nov 2009 00:00

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Zitat:

Zitat von romber
Soll ich dabei TImage benutzen oder irgendwas anderes?

Für das Orginalbild ein TImage und für die Farbmaske ein TPicture.
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:
FFarbMaske := TPicture.Create;
Im OnDestroy-Event wieder freigeben (FFarbMaske.Free).
Laden mit LoadFromFile() an beliebiger Stelle.

romber 11. Nov 2009 00:02

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
OK, und wie andere ich nun die Farbe des Bild-Teiles, auf das geklickt wurde?

Tyrolean 11. Nov 2009 07:03

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Zitat:

Zitat von romber
Wie würdet Ihr die Aufgabe lösen? Gibt es doch eine Komponente dafür?

Schau dir mal die Komponente THotspotImage von TMS (www.tmssoftware.com) an. Die macht eigentlich genau das was du willst.

Gruß aus den Bergen
Günter

DeddyH 11. Nov 2009 07:12

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Oder die hier.

Tyrolean 11. Nov 2009 07:41

Re: Ein Bild in einzelne klickbaren Teile aufteilen???
 
Zitat:

Zitat von DeddyH
Oder die hier.

Klingt gut. Weniger gut ist, dass er keine Weiterentwicklung mehr macht und auch keinen Support.

Gruß aus den Bergen
Günter


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr.
Seite 1 von 2  1 2      

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