Versuch nicht, die Bitmap aus der Imagelist zu holen
Muss ich aber, weil ich die die Grafiken eigentlich in einem Listview verwenden will. Das mit dem Button war erst einmal ein Test, die Grafiken generell transparent zu bekommen.
Mein eigentliches Anliegen ist folgendes:
Der Anwender soll als "Customizing" im Programm seine eigenen Symbole auswählen können, die in einem Listview als grafische Unterstützung einer Ordnerstruktur angezeigt werden sollen. Jedem Eintrag soll eine spezielle Grafik zugewiesen werden können.
Die ausgewählten Grafiken werden in einer Imagelist abgelegt und am Ende in einem Stream als Datei gespeichert, mitsamt anderer Daten, die verwendet werden.
Beim nächsten Start soll dieser Stream wieder geladen werden, und die einzelnen Grafiken in der Imagelist eingefügt werden. Anhand des ImageIndex wird die Grafik im Listview angezeigt.
Das funktioniert soweit auch ganz gut, bis auf die Transparenz! Die geht verloren.
Zum Laden verwende ich
TBitmap.CreateFromStream(IconStream);
wobei
IconStream : TMemoryStream;
definiert ist. Und dann übergebe ich die gelesenen Grafiken der Imagelist, wobei
TIconData(IconList[i]).Icon
die Grafik beinhaltet:
Delphi-Quellcode:
for i := 0 to IconList.Count - 1 do
begin
ii := ImageListLeft32.AddMasked(TIconData(IconList[i]).Icon, clFuchsia);
ImageListLeft32.Draw(Canvas, 0, 0, ii);
end;
Vielleicht ist mein Ansatz auch grundlegend falsch und ich müsste es anders angehen.
Für einen Tipp wäre ich dankbar.