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

时间:2020-03-06 15:04:23  来源:igfitidea点击:

通过在图像列表编辑器中添加PNG图像,Delphi 2009的TImageList支持PNG图像。有什么方法可以从TImagelist中提取TPngImage并保留alpha通道吗?

我要做的实际上是从一个TImageList中提取图像,使它们成为禁用版本,然后将它们添加到另一个TImageList中。在此操作期间,我当然想保留PNG图像的Alpha通道。

解决方案

我在Delphi 2006中做了类似的事情。

TImageList包含一个受保护的方法GetImages。可以使用"受保护的错误"进行访问

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;

我希望这能给我们足够的指导以进行进一步的探索。