2008-10-03 87 views
3

Delphi 2009的TImageList通過將它們添加到imagelist編輯器中來支持PNG圖像。有沒有什麼辦法從TImagelist中提取TPngImage並保留Alpha通道?從Delphi 2009中提取PNG圖像imagelist

我想要做的是實際上從一個TImageList中提取圖像,製作它們的禁用版本,然後將它們添加到另一個TImageList。在此操作過程中,我當然想保留PNG圖像的Alpha通道。

回答

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; 

我希望這給你足夠的指針進一步探討。