从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;
我希望这能给我们足够的指导以进行进一步的探索。