过程:
实时采集16路数据(1S为最小周期,感觉不算快),并实时画曲线,6分钟进行一次数据清空,CPU利用率峰值为10%。
问题:
1.在3-6分钟时,CPU利用率在6%-10%,绘图很流畅,但是如果最小化或者有其他软件遮挡,明显感觉控件(BUTTON,EDIT等)重绘不及时,我认为是长时间占用系统资源的原因,请问有没有解决办法,或者其他什么原因?
2.除了减小清空周期(6分钟外),有没有其他解决办法。
3.大家有没有更好的意见

解决方案 »

  1.   

    好久不画图了,有个好像叫内存缓冲还是什么的。
    就是先把要画的图线在内存DC上画好,然后一次print到界面上。
      

  2.   

    button/edit之类重画很快的。应该是你的代码导致CPU100%了
      

  3.   

    假定只遮挡一个button,再移开遮挡窗口,应该不会变慢。而部分遮挡你画图的区域后就会变慢。是不是这样?
      

  4.   

    哈哈!10%正好折行了,没看清,还以为100%
    你是不是GetDC画的?
    而一旦进入WM_PAINT,就出现慢的症状?
      

  5.   

    是DC画的,开16路时间长了会慢,当我只开4路数据,CPU利用率只有2%—3%不会有这种感觉
      

  6.   

    cpu利用率这么低...难道你在消息处理中有wait或sleep之类?
      

  7.   

    没有啊,因为4路CPU利用率就低,16路就高了,所以我才认为是画图时,占资源太多的原因
      

  8.   

    而且当最小化时,不画图不重绘,CPU利用率一直都是0%-3%
      

  9.   

    画图反正是在UI线程里画,如果CPU没满,画个按钮什么应该不会慢啊!你没有Subclass按钮自己画吧?
      

  10.   

    http://msdn.microsoft.com/zh-cn/library/ms386465%28VS.71%29.aspx
      

  11.   

    当我2秒才一次,CUP除了在画图时高一点有个5%-8%,其余都是件都是0%-2%,我估计还是画图占用资源的问题
      

  12.   

    1。“可是刚开始的数据还不多的时候,很流畅。。”注意有没有内存释放问题;再者,一个合理的方式是:只绘新数据,老数据已经绘上去了(不用每次把所有的数据都绘一遍),图底(就是DC缓冲)应该有保留。如果数据波形(或其它形状)是随时间移动的,贴图底时注意每次增加位移就好(注意DC缓冲要足够大)。
    2。如果上一条做好了应该就没有问题了。如果还想进一步优化,就要使用多线程,不要占用UI线程,改一改以上的那个示例就可以了。
      

  13.   

    挡住了再移开就会引起重绘,当然会慢了。我觉得主要还是你绘图过程优化不好,导致CPU占用率高。没看太明白你的描述,你不同时间的数据是都要画到可视范围内?那你用双缓冲没有呢,不会每次都是擦除重画吧。
      

  14.   

    “最小化或者有其他软件遮挡”引起全部刷新当然慢YY了:降低CPU占用率的思路有3:
    1. 双缓冲(预先生成BMP)
    2. 局部刷新
    3. 降低刷新频率
      

  15.   

    碰到过,最下化,然后恢复就会先黑一下,明明所有控件的onerase全返回true了