Delphi 2009的TImageList通过在图像列表编辑器中添加它们来支持PNG图像。有没有办法从TImagelist中提取TPngImage并保留alpha通道?
我想要做的是从一个TImageList中提取图像,制作它们的禁用版本,然后将它们添加到另一个TImageList。在此操作过程中,我当然希望保留PNG图像的alpha通道。
答案 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;
我希望这能为你提供足够的指导,以便进一步探索。