我用VC编辑了一个小游戏 但是屏幕总闪烁

用MFCVC++6.0编辑了一个简单的弹球小游戏因为是鼠标控制下面的板所以用了OnMouseMove()每次鼠标移动都刷新一次刷新用的是Invalidate()此处造成屏... 用MFC VC++6.0编辑了一个简单的弹球小游戏

因为是 鼠标控制下面的板 所以用了OnMouseMove()
每次鼠标移动都刷新一次
刷新用的是Invalidate() 此处造成屏幕闪烁

小球的运动 小球每一次运动 也应用了绘图区的重绘
Invalidate() 此处也造成屏幕闪烁

怎么能让屏幕不闪烁呢

双缓冲可以达到这个目标吗 请明白的人告诉我怎么实现好吗
还有Invalidate()是全屏的重绘 如果用区域重绘能实现游戏功能吗

谢谢指教
刷新变化的区域解决了部分问题 但是没有完美解决...
展开
 我来答
BlueWanderer
2009-02-03 · TA获得超过9209个赞
知道大有可为答主
回答量:5673
采纳率:83%
帮助的人:1975万
展开全部
双缓冲也就是在后台建两个位图。其中一个作为前景缓冲,当屏幕需要重画的时候直接把这个缓冲的内容复制到屏幕上。另一个作为后台缓冲,在上面绘制游戏需要显示的内容。后台缓冲绘制完成后,将两个缓冲交换,前台缓冲变为后台缓冲。这个时候强制重绘屏幕,把新的前台缓冲更新到屏幕上去。

这样可以消除闪烁因为不会清屏,新内容总是直接覆盖上去的。

但是在窗口模式写tearing是无法避免的,但这里说这个就跑题了可能。
demon3434
2009-02-03
知道小有建树答主
回答量:35
采纳率:0%
帮助的人:0
展开全部
“还有Invalidate()是全屏的重绘 如果用区域重绘能实现游戏功能吗”
InvalidateRect,好像有叫这个名字的函数,区域重绘
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ae3e84a
2009-02-03 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:340
采纳率:0%
帮助的人:186万
展开全部
建议去csdn 先试试楼上说的用InvalidateRect
太专业的问题还得去论坛
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
装着很懂
2009-02-02 · TA获得超过138个赞
知道小有建树答主
回答量:400
采纳率:0%
帮助的人:385万
展开全部
Invalidate()
要带参数
true 或 false
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式