请教一个菜鸟问题
在MFC绘图的时候
当图形变化比较频繁的时候
比如500ms一次的时候
就像俄罗斯方块或者贪吃蛇那样变化图像
刷新会使窗口闪动
请问大家怎么处理的
此致
敬礼
在MFC绘图的时候
当图形变化比较频繁的时候
比如500ms一次的时候
就像俄罗斯方块或者贪吃蛇那样变化图像
刷新会使窗口闪动
请问大家怎么处理的
此致
敬礼
解决方案 »
- 为什么我traceroute www.baidu.com没有结果
- 关于afx void OnNcPaint和afx LRESULT OnNcPaint(UINT, WPARAM, LPARAM..)的问题
- VC++ Oracle ADO BLOB 字段存取问题(200分)
- LPCTSTR转换到LPWSTR
- 请看这段代码有什么不对,为什么组合框收不到消息?
- 请教高手!
- 微软宣布Smart Card是'.NET'的重要技术
- 调用pdflib调用不起来--解决给100分
- 我居然不会c++?有关vxd问题,专业人士莫进!!!
- 为什么我不能用RegisterServiceProcess?是VC安装时有问题吗?三个安装选项哪个好些?
- 如何响应用于播放视频流的Picture控件的鼠标单击事件?
- 问个菜问题,有关OnPaint
另外,所有绘图都要在内存DC中绘画完成,然后再一次性贴到程序DC中。
1、脱屏渲染(内存兼容DC);
2、避免频繁的大面积刷屏,即:少用Invalidate,改用InvalidateRect;
3、如果一次绘图中要使用多种色彩的pen和brush,用不着创建多种色彩的pen和brush,改用GetStockObject获得DC_PEN和DC_BRUSH,之后用SetDCPenColor和SetDCBrushColor改变颜色即可;
4、最有效的方法是:使用专用DC(如AutoCAD等,即使频繁刷屏也不会闪烁。),在注册窗口类的时候指定类的style:CS_OWNDC,这样,程序只需要在初始化时调用一次GetDC,并保留后面使用即可,因为GetDC和ReleaseDC很耗时的;
5、优化算法,减少计算时间;
6、综合以上5点一起使用,闪烁问题可以很好控制。
http://www.techrss.cn/html/2008/09-27/115936.htm
其实,双缓冲,看一下就知道了,主要是贴图!