用MFC写小游戏的问题 20

建立了一个基于对话框的MFC程序,使用SetTimer来定时,在OnTimer中调用Invalidate,然后在OnPaint中绘图,这样感觉刷新太快时屏幕会闪烁,有没有... 建立了一个基于对话框的MFC程序,使用SetTimer来定时,在OnTimer中调用Invalidate,然后在OnPaint中绘图,这样感觉刷新太快时屏幕会闪烁,有没有更好的办法? 展开
 我来答
Frank7258
2011-01-02 · TA获得超过1503个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:553万
展开全部
1. 如何绘图的工作量比较多,建议先建立内存DC,然后在内存中画图,画图之后,最后调用BitBilt将图形直接复制到屏幕上。

2. 闪烁还有一个原因是刷新了对话框背景,如果你的绘图代码中,有绘制背景的代码,那么在WM_ERASEBACKGROUND的消息响应函数直接返回TRUE,代表该消息你已经处理,不需要再调用基类的函数来处理,基类函数会把对话框的背景刷成默认的灰色。另外,简单的办法是Invalidate(FALSE),参数指明不要重画背景。

3. 如果绘图面积很大,而你每次改动的部分很小,可以用InvalidateRect函数来指定哪部分区域需要画图,在OnPaint中,调用CDC::GetClipBox获得这个区域,其他的区域不需要进行绘图操作。
lhjun705
2011-01-02
知道答主
回答量:34
采纳率:0%
帮助的人:21万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式