我正在使用Inscriber Technology的Via Builder。這個應用程序將TGA序列動畫合併到一個.via文件中,因爲該文件已經過優化,所以加載大型序列會更好。有一些插件可以在一些Adobe產品中使用它。Inscriber Technology Via Builder和Delphi - Alpha Channel支持
我正在使用Delphi,而我的問題是我無法從框架中取回原始的Alpha通道。使用他們的VIACODECLib_TLB庫,我有以下功能:
function GetFrameBitmap(Frame: Integer): Integer;
來自thaiaIVile接口。該函數應該從原始序列返回一個幀位圖的句柄。下面的代碼可以工作:
viaObject: IViaFile;
bmp: TBitmap;
index: Integer;
bmp.Handle := ViaObject.GetFrameBitmap(index);
但是最終的位圖是沒有alpha通道的原始幀。實際上,整個圖像的alpha通道爲零。
假設我做錯了什麼,我嘗試使用GetDIBits函數,以確保某處有一個alpha通道。所以我分配了足夠長的內存來存儲位圖,假設它有4個通道並使用了GetDIBits函數。我得到了和以前相同的結果:正常幀,整個圖像的alpha通道爲零。
需要注意的是,Inscriber(其論壇已經死亡)聲稱其Via Builder具有完整的Alpha支持。我知道有人設法使用GetDIBits函數在C++上正確加載框架,但是將代碼「翻譯」爲Delphi並不起作用。
任何幫助將不勝感激。
謝謝。
嗨,謝謝你的回答。我忘了提及我正在使用支持alpha混合(GR32)的圖形庫。使用GetDIBits,我只是複製函數返回的字節數組,結果是alpha通道全部設置爲零的原始幀。我會再看看C++代碼。謝謝。 – Rafael 2009-03-03 12:27:36