2011-11-27 22 views
2

我有一個DIB句柄。如何將其轉換爲TPNGObject並保持其透明度?如何將DIB轉換爲TPNGObject?

編輯: 我使用方法2在此解決方案Here

但位造成不透明,即使我設置其Transparent標誌與真

+3

哪個Delphi和哪個PNG庫? –

+0

我使用的是Delphi 7,但我不明白你的意思是什麼,謝謝你的關注:) –

+0

D7有許多常用的PNG庫。答案可能取決於你使用哪一個。 –

回答

1

我認爲它會開始時有點像這:

var 
    lpbi: PBitmapInfoHeader; 
begin 
    // Get DIB header info from DIB handle 
    lpbi := PBitmapInfoHeader(GlobalLock(hdIB)); 
end; 

然後,如果它是一個32位圖像,它將有一個alpha通道,它將用於透明度數據。

然後,將RGB數據複製到PNG對象的掃描線,並將alpha數據複製到alpha掃描線。

+0

我使用此代碼來獲取位圖,我如何操縱它來提取PNG圖像(位圖即使將透明屬性設置爲true,圖像效果也不透明 –

+0

@Sara,是的,TBitmap只支持單一的透明顏色,它的顏色與第一個像素(左上角)相匹配。 Gustavo Daud的TPNGObject支持完整的Alpha通道。您可以使用掃描線和alpha掃描線屬性將數據複製到像素點。 –

+0

感謝馬庫斯,但你能幫我如何複製圖像數據 –

相關問題