2 justin bu Justin_Bu 于 2015.07.10 23:26 提问

用VS写MFC飞机大战遇到的画面卡顿
mfc

写出程序后测试时候发现,当我长按一个键(比如向左移动),时间稍长就会使得画面变得非常卡,所有显示都会卡,是由于触发的事件太多的原因吗?该怎么解决呢?

6个回答

devmiao
devmiao   Ds   Rxr 2015.07.10 23:33
已采纳

是的,你可以在处理键盘事件的时候设置一个bool值,不允许触发新的事件。另外,绘图的时候最好只绘制客户区可见的部分,可以提高性能。

u011171235
u011171235   2015.07.10 23:33

建议使用OpenGl,使用双缓冲模式,由于显示的时候数据还没准备好,结果下一次的触发又要刷新,并计算数据

huangtaibin
huangtaibin Mittenss说的对,利用双缓冲会绘图(可以再网上搜索一下),可以将你此刻的显示数据现在内存里画好,然后再整体贴到制定区域(就像一张张贴图一样)这样可以有效的避免刷新和显示问题
2 年多之前 回复
Justin_Bu
Justin_Bu 谢谢你的回答,但我初学编程,对OpenGI还不是很了解,所以采纳了另一个回答。再次感谢!
2 年多之前 回复
dw198
dw198   2015.07.11 08:06

你可以作一个queue队列 , 在queue 中处理事件过程

huangtaibin
huangtaibin   2015.07.11 09:51

Mittenss说的对,利用双缓冲会绘图(可以再网上搜索一下),可以将你此刻的显示数据现在内存里画好,然后再整体贴到制定区域(就像一张张贴图一样)这样可以有效的避免刷新和显示问题

Evankaka
Evankaka   Ds   Rxr 2015.07.11 12:03
tabe123
tabe123   Rxr 2015.07.11 12:59

这个肯定是要用双缓冲的

Csdn user default icon
上传中...
上传图片
插入图片