急急急!用DirectDrawSurface的DrawText在屏幕上画出的字符,应该怎么删除?我在接近的坐标些很多字符,可是都重叠到一起了。

bgxy 2003-05-11 10:48:37
我想用DirectX7每隔1秒(Timer控件每一秒钟执行一次)在屏幕上画一个字符,用DirectDrawSurface7的DrawText可以画出,颜色、背景色、透明等都没有问题。
可是在两次画字符时,前一次画出的字符不能消失,还是存在在那里,如果坐标相似,两次画出的字符就重叠到一起了。

我看过DirectX7的帮助文件,找不到删除被DrawText画出的字符的方法。是不是每次都要重建Surface?

请高手帮助!

...全文
107 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bgxy 2003-05-19
  • 打赏
  • 举报
回复
谢谢大家帮助!
不好意思,我不懂VC,没有看懂上面的代码,只会用VB,而且对DirectX不是很熟练。

信誉分被扣了好多,趁早结账了。
littlebee 2003-05-17
  • 打赏
  • 举报
回复
用timer控件不好吧!!!影响速度!!
应该计算刷新率来决定文字是否更新,
而且每次更新表面是要清空表面的。
Coder 青田 2003-05-14
  • 打赏
  • 举报
回复
是啊,每在屏幕上更新一点东西都要刷新屏幕的,光更新你指定的矩形也可以,使你的要更新的矩形无效
paulluo0739 2003-05-13
  • 打赏
  • 举报
回复
agree with DarthVader(黑炭骑士)
DarthVader 2003-05-12
  • 打赏
  • 举报
回复
你没有刷新背景吧 那样当然字符可能重叠了
你必须每次画字符前 都把背景重画一遍
就像美术家画油画 不满意的就用画笔在上面抹上油彩 再
如果不要背景 那就每次都把背景涂黑好了
看看源码:

// Blt the bg-image on the backbuffer, ignoring errors until the flip
g_pDisplay->Blt( 0,0,g_pBgSurface, NULL );
// 这是画背景,你也可以用:g_pDisplay->Clear( 0 );来清空屏幕

// Blt all the sprites onto the back buffer using color keying,
g_pZealot->Show( g_rcFrame ); // 这是画游戏精灵

// Show game info
GameInformation(); // 这里是显示信息字符

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧