Danke!
Ja es gibt Memory!
Nun hier mein Test. Zuerst die Items alle in einem Stream Packen und dann wieder in eine neue Imagelist eintragen.
Das geht nun schon ganz gut - Icons sind dann in der sAlphaImageList1.
Jedoch verlieren die Icons durch den Transfer mit dem Stream ihre Transparenz!?
Gibt es da noch was, was ich übersehen habe?
Wenn ich in der sAlphaImageList1 ein Icon manuell einfüge und keines vom Stream hinzufüge ist es transparent.
Wenn eines von dem Stream hizugefügt wird sind keine mehr transparent.
Delphi-Quellcode:
IconsStream := TMemoryStream.Create;
//add all icons to stream:
for i := 0 to sAlphaImageList.Count - 1 do
begin
SizeOfIcon := sAlphaImageList.Items[i].ImgData.Size;
IconsStream.Write(SizeOfIcon,SizeOf(Int64));
IconsStream.Write(sAlphaImageList.Items[i].ImgData.Memory^, SizeOfIcon);
end;
MyIcon := TIcon.Create;
ReceivedIconStream := TMemoryStream.Create;
TempStream := TMemoryStream.Create;
ReceivedIconStream.LoadFromStream(IconsStream);
FreeAndNil(IconsStream);
ReceivedIconStream.Position := 0;
//read all icons from stream:
while ReceivedIconStream.Position < ReceivedIconStream.Size do
begin
ReceivedIconStream.Read(SizeOfIcon,SizeOf(Int64));
TempStream.SetSize(SizeOfIcon);
TempStream.Position := 0;
ReceivedIconStream.Read(TempStream.Memory^,SizeOfIcon);
MyIcon.LoadFromStream(TempStream);
sAlphaImageList1.AddIcon(MyIcon);
end;
FreeAndNil(MyIcon);
FreeAndNil(ReceivedIconStream);
FreeAndNil(TempStream);