我有一個DIB句柄。如何將其轉換爲TPNGObject
並保持其透明度?如何將DIB轉換爲TPNGObject?
編輯: 我使用方法2在此解決方案Here
但位造成不透明,即使我設置其Transparent
標誌與真
我有一個DIB句柄。如何將其轉換爲TPNGObject
並保持其透明度?如何將DIB轉換爲TPNGObject?
編輯: 我使用方法2在此解決方案Here
但位造成不透明,即使我設置其Transparent
標誌與真
我認爲它會開始時有點像這:
var
lpbi: PBitmapInfoHeader;
begin
// Get DIB header info from DIB handle
lpbi := PBitmapInfoHeader(GlobalLock(hdIB));
end;
然後,如果它是一個32位圖像,它將有一個alpha通道,它將用於透明度數據。
然後,將RGB數據複製到PNG對象的掃描線,並將alpha數據複製到alpha掃描線。
我使用此代碼來獲取位圖,我如何操縱它來提取PNG圖像(位圖即使將透明屬性設置爲true,圖像效果也不透明 –
@Sara,是的,TBitmap只支持單一的透明顏色,它的顏色與第一個像素(左上角)相匹配。 Gustavo Daud的TPNGObject支持完整的Alpha通道。您可以使用掃描線和alpha掃描線屬性將數據複製到像素點。 –
感謝馬庫斯,但你能幫我如何複製圖像數據 –
哪個Delphi和哪個PNG庫? –
我使用的是Delphi 7,但我不明白你的意思是什麼,謝謝你的關注:) –
D7有許多常用的PNG庫。答案可能取決於你使用哪一個。 –