从Delphi 2009图像列表中提取PNG图像

时间:2008-10-03 12:54:16

标签: delphi png delphi-2009 imagelist

Delphi 2009的TImageList通过在图像列表编辑器中添加它们来支持PNG图像。有没有办法从TImagelist中提取TPngImage并保留alpha通道?

我想要做的是从一个TImageList中提取图像,制作它们的禁用版本,然后将它们添加到另一个TImageList。在此操作过程中,我当然希望保留PNG图像的alpha通道。

1 个答案:

答案 0 :(得分:1)

我使用Delphi 2006做了类似的事情。

TImageList包含受保护的方法GetImages。可以使用“受保护的bug”

访问它
type
  TGetImageImageList = class (TImageList) // Please use a better name!
  end;

您可以将图像列表强制转换为TGetImageImageList以获取GetImages。

begin
  TGetImageList(ImageList).GetImages(index, bitmap, mask);
end;

位图包含位图,而掩码是黑白位图,用于确定透明部分。

您现在可以使用以下命令更改位图并存储它:

function Add(Image, Mask: TBitmap): Integer;

我希望这能为你提供足够的指导,以便进一步探索。