vc 重绘占用CPU过高问题
在单文档视图中绘制运动轨迹,每秒钟增加一个点,视图不停的重绘,程序大概在运行一个半小时的时候,CPU使用率会达到%50.请问高手这个问题怎么解决?
[解决办法]
建立内存dc,每次都画在内存dc上
然后ondraw里拷贝过去
[解决办法]
问题出现在在你每秒都重绘上,如果点子过多,你再使用setpixel这类函数,cpu占用肯定就高了。
1. 每次只绘改变的点。
2. 更改绘图方式。
[解决办法]
可能是每次重绘都是从第一个点画起的吧,那样的话,花时间太多了,可以只画后面新生成的点
[解决办法]
上代码....
[解决办法]
cainiao luguo
[解决办法]
记得侯捷的<深入浅出MFC>里面有个重绘的 Hint,就是只画你一部分,
建议你看一下,应该有帮助,
[解决办法]
#include "ENtime.h"//每一帖起始时间void ENtime::countGetTickCount(){ IniFrameDelay=GetTickCount();//获得豪秒// cout<<"IniFrameDelay:"<<IniFrameDelay<<endl;}//计算每一帖帖速void ENtime::countFrameSpeed(){ FrameDelay=GetTickCount() - IniFrameDelay;//每一帖的帖速// cout<<"FrameDelay:"<<FrameDelay<<" SetSpeedValue:"<<SetSpeedValue<<endl; }//控制相对帖速int ENtime::setFrameSpeed(float speed){ SetSpeedValue=speed;//设置帖速 return 1;}//获取相对帖速值int ENtime::getFrameSpeed(){ return SetSpeedValue;}//设置sleepbool ENtime::FrameSleep(){ FrameDelay=GetTickCount() - IniFrameDelay;//每一帖的帖速 if(FrameDelay < SetSpeedValue) { ::Sleep(SetSpeedValue - FrameDelay);//主动放弃CPU使用时间 // ::Sleep(SetSpeedValue);//主动放弃CPU使用时间 return 0;//帖速不合符要求 } return 1;//帖速合符要求}