读书人

vc 重绘占用CPU过高有关问题

发布时间: 2012-01-11 22:28:46 作者: rapoo

vc 重绘占用CPU过高问题
在单文档视图中绘制运动轨迹,每秒钟增加一个点,视图不停的重绘,程序大概在运行一个半小时的时候,CPU使用率会达到%50.请问高手这个问题怎么解决?

[解决办法]
建立内存dc,每次都画在内存dc上
然后ondraw里拷贝过去

[解决办法]
问题出现在在你每秒都重绘上,如果点子过多,你再使用setpixel这类函数,cpu占用肯定就高了。

1. 每次只绘改变的点。
2. 更改绘图方式。

[解决办法]
可能是每次重绘都是从第一个点画起的吧,那样的话,花时间太多了,可以只画后面新生成的点
[解决办法]
上代码....
[解决办法]
cainiao luguo
[解决办法]
记得侯捷的<深入浅出MFC>里面有个重绘的 Hint,就是只画你一部分,
建议你看一下,应该有帮助,

[解决办法]

C/C++ code
#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;//帖速合符要求} 

读书人网 >VC/MFC

热点推荐