使用Delphi XE在运行时将png图像添加到图像列表

时间:2010-11-19 02:26:20

标签: delphi delphi-xe

我需要在运行时将png图像添加到TImageList。我查看了TCustomImageList实现的功能,但它们只允许添加

  • 位图,
  • 图标或
  • 来自其他图片列表的图片

E.g:

function Add(Image, Mask: TBitmap): Integer;
function AddIcon(Image: TIcon): Integer;
function AddImage(Value: TCustomImageList; Index: Integer): Integer;
procedure AddImages(Value: TCustomImageList);
function AddMasked(Image: TBitmap; MaskColor: TColor): Integer;

如何在不将此图像转换为BMP的情况下将PNG图像添加到ImageList组件?

IDE已经可以在设计时将PNG添加到ImageList:

enter image description here

现在我们需要在运行时完成它。

3 个答案:

答案 0 :(得分:18)

答案 1 :(得分:3)

根据MSDN,图像列表只能包含位图和图标。要将png图像添加到图像列表,您必须先将其转换为图标。可以在PngComponents包中找到执行此操作的代码。如果您的图像列表中只有PNG图像,那么为简单起见,只需使用该软件包附带的TPngImageList。

答案 2 :(得分:1)

  • 创建TPngImage的实例,PngImage:PngImage
  • 将图像加载到此实例PngImage.LoadFromFile(..)
  • 创建TBitmap的实例,位图:TBitmap
  • 将PNG分配给位图Bitmap.Assign(PngImage)
  • 将位图添加到图像列表
  • 工作完成!