TImageList
'dan TImage
ürününe resim (32 bit derinliğinde, saydam) yüklemek istiyorum. Standart yaklaşım ImageList.GetBitmap(Index, Image.Picture.Bitmap);
olacaktır. Ancak GetBitmap
yöntemi saydamlık ile çalışmaz, bu yüzden her zaman saydam olmayan bir bitmap alırım.ImageList'ten saydam bir görüntü nasıl yüklenir?
6
A
cevap
23
Geçici çözüm oldukça basittir - ImageList, saydamlık ile birlikte çalışan GetIcon
başka bir yöntem sunar.
ImageList.GetIcon(Index, Image.Picture.Icon);
Ve uygun Imagelist özellikleri ayarlamak unutmayın:: Kod şeffaf Görüntü olacağını yüklemek için
ben de bir tImageList gelen görüntülerde geçen çeşitli sorunlar vardıImageList.ColorDepth:=cd32bit;
ImageList.DrawingStyle:=dsTransparent;
2
. Bu yüzden genellikle işi yapan basit bir sarmalayıcı rutinim var ve şeffaflığı zorluyor. Aşağıdaki kod Delphi 2005 ve imlActiveView, düğme glif imgelerimden oluşan tImageList bileşenidir. İşte
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;
5 imlActiveView görüntü btnNavigate.Glyph geçirilir kullanımına ilişkin bir örnektir.
LoadBitmap (5, btnNavigate.Glyph)
gibi [ 'RRUZ suggested'] (http://stackoverflow.com/questions/10972986/png-image-from-imagelist#comment14330479_10973026), bir süre önce ... – TLama