Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Transparente Farbe aus ImageList holen. (https://www.delphipraxis.net/184470-transparente-farbe-aus-imagelist-holen.html)

Popov 28. Mär 2015 22:06

Transparente Farbe aus ImageList holen.
 
Ich nutze TImageList für kleine Bitmaps, diese werden auf andere Grafik gezeichnet. Dazu hole ich die Bitmap zuerst aus der ImageList mit GetBitmap. Soweit alles ok.

Nur sind einige der Bitmaps in der ImageList transparent. Mit GetBitmap wird die Transparenz beim holen auch eingehalten, aber nun will ich das Ergebnis auf die große Grafik zeichnen. Doch nun bekomme ich Probleme mit der Transparenz.

Natürlich kann ich z. B. clFuchsia als Grundlage nehmen und diese nun meinerseits als Transparentfarbe zum zeichnen nutzen. Nur kann ich aber nicht sicher sein, dass clFuchsia nicht eine wichtige Farbe in der Bitmap spielt.

Die original Transparenzfarbe kann ich meiner Kenntnis nach nicht aus ImageList holen. clNone ich keine Farbe, nur eine Einstellung, dass transparent gezeichnet werden soll.

Wie kann ich nun eine transparente Bitmap aus ImageList holen und meinerseits transparent zeichnen?

Ich hab zwar eine Lösung, die ist aber etwas Overkill. Hier übertrage ich zuerst den Hintergrund von der Stelle wo die Bitmap später hin soll. Funktioniert zwar, ich suche aber etwas einfaches.

Sir Rufo 28. Mär 2015 22:46

AW: Transparente Farbe aus ImageList holen.
 
Ich vermute mal du suchst nach Delphi-Referenz durchsuchenTImageList.Draw

Popov 28. Mär 2015 23:01

AW: Transparente Farbe aus ImageList holen.
 
Danke dir. Genau was ich gesucht habe. Hab die Hilfe zwar überflogen, aber anscheinend Draw übersehen.

himitsu 28. Mär 2015 23:57

AW: Transparente Farbe aus ImageList holen.
 
Die TImageList speichert beim Import nicht die Farbe, sondern die resultierende Maske.
ImageList1.GetMaskBitmap ist dann ein Schwarz/Weiß-Bild mit den transparenten Pixeln, :stupid:
also quasi der abgetrennte Alphakanal mit 0% oder 100%.

Popov 29. Mär 2015 00:32

AW: Transparente Farbe aus ImageList holen.
 
Das war schon klar, deshalb auch die Frage. Sonst hätte man die Transparenzfarbe nehmen könne. Natürlich kann man mit der Bitmap und der Maske mit leichtem Aufwand transparent zeichnen, aber... usw.

himitsu 29. Mär 2015 03:39

AW: Transparente Farbe aus ImageList holen.
 
Wie gesagt, es gibt keine Transparenzfarbe mehr.

Nur der Importer kennt kurzzeitig die Farbe und generiert daraus die Maske.
Man kann aber auch direkt die Maske zu einem Bild hinzufügen (allerdings nicht im Designer-Editor, denn der ist zu doof dafür)

Draw macht auch nichts anderes als Maske und Bild zu nehmen und malt dann nur die Pixel des Bildes, welche in der Maske freigegeben sind.

Bernhard Geyer 29. Mär 2015 07:38

AW: Transparente Farbe aus ImageList holen.
 
Muss es denn unbedingt Bmp sein? Mit den PNGComponents könntest du PNGs nehmen und hättest nicht nur den einfachen Fall von einer Transparentsfarbe sondern jedes Pixel kann ein x% Transparents beinhalten.

Popov 29. Mär 2015 11:29

AW: Transparente Farbe aus ImageList holen.
 
Vielen Dank Leute, aber in Post #2 wurde bereits die Lösung genannt. Keine Ahnung wieso ich Draw übersehen habe? Vielleicht weil ich ImageList inzwischen zig Jahre nutze und die ganze Zeit nur GetBitmap gebraucht haben, somit nichts neues von der Komponente erwartet habe, oder meine Brille inzwischen zu schwach ist, so dass ich gelegentlich einige Methoden oder Eigenschaften übersehe, aber Draw ist das was ich gesucht habe. Und das ImageList Masken mitliefert, das habe ich sogar schon früher gewusst :)


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