象mspaint,他的滚动时,基本上不影响CPU。
但我用的是双缓冲,
所以在滚动“滚动条”时,用缓冲的bmp复制到视图。
但这样,CPU很容易到100%的。
在不动CView重画时,就基本上不影响CPU。问题是:滚动“滚动条”时,是不是一定要自己重画CView么?
重画时,使用什么方法即可以用双缓冲,又不很大地影响CPU?
但我用的是双缓冲,
所以在滚动“滚动条”时,用缓冲的bmp复制到视图。
但这样,CPU很容易到100%的。
在不动CView重画时,就基本上不影响CPU。问题是:滚动“滚动条”时,是不是一定要自己重画CView么?
重画时,使用什么方法即可以用双缓冲,又不很大地影响CPU?
解决方案 »
- 绑定在同一ip和port的两个socket,为什么关闭一个socket对另一个有影响???
- 关于树控件,实现显示图片的功能,急!!在线等!!!
- 请“ bobob(6颗星星就变绿色了!)(★★★★★★) ”进来接分!!!
- 高手请进:一个关于SQLServer内存的问题
- 请问如何设置编辑库为不可横向滚动.
- 网络编程:网络传输速度的问题
- WinSock select ...
- 求救!!程序在Release版本下退出出现异常,但是Debug下正常 在线等待!(散分)
- 一个窗口在什么情况下会收到wm_paint消息
- 斑竹,大哥!,帮我这个问题!!!!急
- 高手请进,解决后马上接贴
- 知道一个进程的HANDLE 和ID ,如何杀死这个进程中的一个线程?(注意:是在另一个进程中杀的)
在处理程序的重画问题时,我们要分清我们重新绘图的目的:有些时候我们需要重新绘图是因为图像部分被遮挡、从不可见变为可见等等。而另外一种情况就是:和这些图像相关的数据发生了变化,需要我们来绘制一幅全新的图片。因此在重新绘图时有必要对他们区别对待,对于第一种情况,我们需要做的是把先前的图像重新绘制到屏幕上而不需要重复产生图像的过场。在第二种情况下,我们首先需要进行图像的产生过程,然后才是第一步的工作。
因此,我建议在屏幕种准备一张和你需要绘制的图像相同大小的兼容位图,在出现第一种情形时,在正确的地方绘图(某些函数有这个参数的)。出现第二种情况时,才重复产生图像的过程(但是不要浪费先前的那张位图,他有时候是可以重新利用的)。如果需要绘制非常复杂的图形,可以创建多张兼容位图。
如果要避免闪烁,不要让默认的函数处理WM_ERASEBKGND消息,在PAINT的过程中由你自己来完成这个过程。