Ich möchte ein Bild (32 Bit-Tiefe, transparent) von einem TImageList
zu einem TImage
laden. Der Standardansatz wäre ImageList.GetBitmap(Index, Image.Picture.Bitmap);
. Die Methode GetBitmap
funktioniert jedoch nicht mit Transparenz, daher erhalte ich immer eine nicht transparente Bitmap.Wie lade ich ein transparentes Bild von ImageList?
6
A
Antwort
23
Die Problemumgehung ist ziemlich einfach - ImageList bietet eine andere Methode GetIcon
, die mit Transparenz OK funktioniert. Code ein transparentes Bild wäre zu laden:
ImageList.GetIcon(Index, Image.Picture.Icon);
Und vergessen Sie nicht die richtige Abbildungsliste Eigenschaften festlegen:
ImageList.ColorDepth:=cd32bit;
ImageList.DrawingStyle:=dsTransparent;
2
Ich habe zu verschiedenen Themen mit dem Führen in Bildern aus dem einen TImageList hatte. So habe ich eine einfache Wrapper-Routine, die im Allgemeinen die Aufgabe erfüllt und die Transparenz durchsetzt. Der Code unten ist Delphi 2005 und imlActiveView ist die TImageList-Komponente, die meine Gruppe von Button Glyph-Bildern enthält.
procedure TfrmForm.LoadBitmap (Number : integer; bmp : tBitMap);
var
ActiveBitmap : TBitMap;
begin
ActiveBitmap := TBitMap.Create;
try
imlActiveView.GetBitmap (Number, ActiveBitmap);
bmp.Transparent := true;
bmp.Height := ActiveBitmap.Height;
bmp.Width := ActiveBitmap.Width;
bmp.Canvas.Draw (0, 0, ActiveBitmap);
finally
ActiveBitmap.Free;
end
end;
Hier ist ein Beispiel für den Einsatz bei der 5. imlActiveView Bild in den btnNavigate.Glyph geleitet wird.
LoadBitmap (5, btnNavigate.Glyph)
Wie [ 'RRUZ suggested'] (http://stackoverflow.com/questions/10972986/png-image-from-imagelist#comment14330479_10973026) vor einiger Zeit ... – TLama