저는 Inscriber Technology의 Via Builder와 함께 작업하고 있습니다. 이 응용 프로그램은 하나의 .via 파일에 TGA 시퀀스 애니메이션을 병합하므로이 파일이 최적화되어 있으므로 큰 시퀀스를로드하는 것이 훨씬 좋습니다. 일부 Adobe 제품에는이 플러그인을 사용할 수있는 플러그인이 있습니다.작성자 및 델파이 - 알파 채널 지원을 통한 Inscriber 기술
저는 델파이에서 작업하고 있는데, 제 문제는 프레임에서 원래의 알파 채널을 다시 가져올 수 없다는 것입니다. 그쪽 IViaFile 인터페이스에서
function GetFrameBitmap(Frame: Integer): Integer;
: 자신의 VIACODECLib_TLB 라이브러리를 사용하여, 나는 다음과 같은 기능을 가지고있다. 이 함수는 원래 시퀀스에서 프레임 비트 맵 핸들을 반환해야합니다. 다음 코드는 작동 할 수 있습니다.
viaObject: IViaFile;
bmp: TBitmap;
index: Integer;
bmp.Handle := ViaObject.GetFrameBitmap(index);
그러나 결과 비트 맵은 알파 채널이없는 원래 프레임입니다. 사실, 알파 채널은 전체 이미지에 대해 0입니다.
뭔가 잘못하고 있다고 가정하면 GetDIBits 함수를 사용하여 어딘가에 알파 채널이 있는지 확인하려고했습니다. 그래서 비트 맵을 저장하기에 충분한 시간 동안 메모리를 할당했고, 4 개의 채널을 가지고 있다고 가정하고 GetDIBits 함수를 사용했습니다. 이전과 같은 결과를 얻었습니다 : 전체 이미지에 대해 일반 프레임, 알파 채널 0.
Inscriber (포럼이 사망)는 Via Builder가 완전한 알파를 지원한다고 주장합니다. GetDIBits 함수를 사용하여 C++에서 올바르게 프레임을로드 할 수있는 사람을 알고 있지만 코드를 Delphi로 "변환"하면 작동하지 않습니다.
도움을 주시면 감사하겠습니다.
감사합니다.
안녕하세요. 답장을 보내 주셔서 감사합니다. 알파 블렌딩 (GR32)을 지원하는 그래픽 라이브러리를 사용하고 있음을 언급하는 것을 잊어 버렸습니다. GetDIBits를 사용하면 함수에서 반환 된 바이트 배열을 복사하는 것만으로 알파 채널이있는 원래 프레임이 모두 0으로 설정됩니다. C++ 코드를 다시 보겠습니다. 감사. – Rafael