回 帖 发 新 帖 刷新版面

主题:令我头痛的colorkey

初学ddraw(已经学了一星期了),我作了如下尝试:
    把显示模式设为800*600*16,然后我想用透明色Blt一个位图。位图载入离屏页面,然后设后台页面colorkey为RGB(255,0,255),也就是粉红色,然后Blt到后台页面,再flip,但是粉红色还是显示出来了。我又设显示模式为800*600*8,colorkey=0xff;也就是黑色,再flip,但是还是不行。请问大家:到底应该如何正确的设置颜色呢?
[em10][em10][em10][em10]

回复列表 (共2个回复)

沙发

在BLT时,不要忘了设置一个标志,比如:DDBLT_KEYSRC(源颜色键)、DDBLT_KEYDEST(目标颜色键)、DDBLTFAST_SRCCOLORKEY、DDBLTFAST_DESTCOLORKEY
DDBLT_ 用于 BLT方法。
DDBLTFAST_ 用于 BLTFAST方法。

后台页面->Blt(NULL, 离屏页面, NULL, DDBLT_WAIT | DDBLT_KEYDEST, NULL);

板凳

问题不是这样的,你说的那些我已经设定了。经过我多次尝试,总结了正确的方法:
#define _RGB16BIT565(r,g,b)((b%32)+((g%64)<<6)+((r%32)<<11))
DDCOLORKEY ddck;
ddck.dwColorSpaceLowValue=_RGB16BIT565(255,0,255);
ddck.dwColorSpaceHighValue=_RGB16BIT565(255,0,255);
lpDDSOffScreen->SetColorKey(DDCKEY_SRCBLT,&ddck);
lpDDSBack->BltFast(0,0,lpDDSOffScreen,NULL,DDBLTFAST_SRCCOLORKEY);
这样就行了

我来回复

您尚未登录,请登录后再回复。点此登录或注册