2010-05-05 7 views
1
BitBlt(meteor.main, 0, 0, meteor.img_width, meteor.img_height, meteor.image, meteor.mask_x, meteor.mask_y, SRCAND); 
BitBlt(meteor.main, 0, 0, meteor.img_width, meteor.img_height, meteor.image, meteor.img_x, meteor.img_y, SRCPAINT); 
BitBlt(buffer, 0, 0, 800, 600, meteor.main, 0, 0, SRCCOPY); 

나는 처음 두 bitblts가 transparancy를 만들지 만, 세 번째는 그것을 제거합니다! 여기서 내가 뭘 잘못하고 있니?SRCCOPY는 BITBLITTED IMAGE에서 투명성을 제거합니다.

답변

0

SrcCopy 원본에서 대상까지 모든 내용을 복사합니다. 목적지에 있던 모든 것이 이제는 모든 것을 소스로 포함하게됩니다.

나는 보통이 작업을 수행하는 방법은 대상으로, 마스크의 형태로,

1) BitBlt(dest.hdc, dest.x, dest.y, width, height, srcMask.hdc, srcMask.x, srcMask.y, MergePaint)

이 본질적으로 구멍을 절단합니다

입니다.

2) BitBlt(dest.hdc, dest.x, dest.y, width, height, src.hdc, src.x, src.y, SrcAnd)

이 기본적으로 대상의 상단에있는 소스를 오버레이.

1B) BitBlt(src.hdc, src.x, src.y, width, height, srcMask.hdc, srcMask.x, srcMask.y, SrcPaint)

:

소스는 오버레이 할 것보다 더 많은 이미지가 포함 된 경우, 먼저 절단 할 수 있습니다 모든 것을 먼저 소스 주위에 (전 2 단계)이 같은 SrcPaint을 사용하고

관련 문제