zhaoyunan 2001年12月12日
急死我了!请教DirectX8下实现动画(不带背景黑框)的方法
定义全局变量
DDCOLORKEY ddck;//结构
LPDIRECTDRAWSURFACE7 lpDirectDrawSurface;//主页面
LPDIRECTDRAWSURFACE7 lpDirectDrawSurfaceBuffer;//缓冲页面
LPDIRECTDRAWSURFACE7 lpDirectDrawBackSurface;//后备页面
RECT r;//结构
r.top=0;
r.left=0;
r.right =32;
r.bottom =32;

定义关键色设置函数
HRESULT SetColorKey(LPDIRECTDRAWSURFACE7 pdds, COLORREF rgb)
{
HRESULT hr;
ddck.dwColorSpaceHighValue=rgb;
ddck.dwColorSpaceHighValue =rgb;
hr=pdds->SetColorKey(DDCKEY_SRCBLT,&ddck);
return hr;
}
----------------------------------------------------------
程序中:
1)使用函数设置后备页面关键色为黑色
SetColorKey(lpDirectDrawBackSurface,RGB(0,0,0));

2)将后备页面的指定矩形框图像传送至缓冲页面
lpDirectDrawSurfaceBuffer->BltFast(0,0,lpDirectDrawBackSurface,&r,DDBLTFAST_SRCCOLORKEY);

3)主页面翻转
lpDirectDrawSurface->Flip(NULL, DDFLIP_WAIT);

结果:
程序动画实现,但动画人物带有黑色背景框,我试了很多方法,始终无法消除.

我用的是DirectX8 SDK,显示模式为800x600,16位高彩色,全屏独占模式;
设置,显示一切正常.

使用的图像为BMP,24位真彩色.

请教:
1)是否是16位色模式不能显示24位色图像?如果是,要怎样转换?
2)我的SetColorKey(LPDIRECTDRAWSURFACE7 pdds, COLORREF rgb)
函数中的代码是否有问题
ddck.dwColorSpaceHighValue=rgb;
ddck.dwColorSpaceHighValue =rgb;
能否这样写,转换后是否正确?

请高手教我800x600,16位高彩色,全屏独占模式下使用的图像为BMP,24位真彩色
实现动画(不带背景黑框)的方法
...全文
45 点赞 收藏 3
写回复
3 条回复

还没有回复,快来抢沙发~

发动态
发帖子
游戏开发
创建于2007-08-27

7148

社区成员

2.3w+

社区内容

游戏开发相关内容讨论专区
社区公告
暂无公告