簡體   English   中英

通過Builder和Delphi的Inscriber技術-Alpha Channel支持

[英]Inscriber Technology Via Builder and Delphi - Alpha Channel support

我正在使用Inscriber Technology的Via Builder。 該應用程序將TGA序列動畫合並到一個單獨的.via文件中,從而可以優化加載大型序列,因為該文件已進行了優化。 有一些插件可用於某些Adobe產品。

我正在使用Delphi,但我的問題是我無法從幀中找回原始的Alpha通道。 使用他們的VIACODECLib_TLB庫,我具有以下功能:

function GetFrameBitmap(Frame: Integer): Integer;

來自IViaFile界面。 該函數應該將句柄從原始序列返回到幀位圖。 以下代碼可以工作:

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無效。

任何幫助將非常感激。

謝謝。

我建議您仔細看一下您同事認為有效的C ++代碼。 您可能錯過了一些細節。 Windows API有多少代碼,而某些供應商特定的圖形代碼有多少? API的東西應該很容易翻譯成Delphi。

您可能會發現Delphi的TBitmap類不支持透明性,因此您需要使用其他圖形支持庫而不是普通的舊GDI。 但是,如果要像GetDIBits一樣獲取原始位圖數據,則至少應該能夠看到其中存在alpha通道數據。 (您仍然需要找到一種正確顯示位圖的方法,但是至少您會知道自己擁有正確的數據。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM