我正在与 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 支持。我知道有人设法在 C++ 上使用 GetDIBits 函数正确加载帧,但是将代码“翻译”为 Delphi 不起作用。
任何帮助将非常感激。
谢谢你。