如何从ImageList加载透明图像?

Mar*_*lka 9 delphi png transparency timage timagelist

我想从一个加载图像(32比特深度,透明的)TImageList到一个TImage.标准方法是ImageList.GetBitmap(Index, Image.Picture.Bitmap);.但是该GetBitmap方法不适用于透明度,因此我总是得到一个非透明的位图.

Mar*_*lka 31

解决方法相当简单 - ImageList提供了另一种方法GetIcon,它可以正常工作.加载透明图像的代码是:

ImageList.GetIcon(Index, Image.Picture.Icon);
Run Code Online (Sandbox Code Playgroud)

并且不要忘记设置正确的ImageList属性:

ImageList.ColorDepth:=cd32bit;
ImageList.DrawingStyle:=dsTransparent;
Run Code Online (Sandbox Code Playgroud)