一个时间较长,数据量比较大的绘图。处理起来耗费时间,当我点击滚动条改变起始位置的时候,有什么办法加快绘图?现在用的已经是内存DC绘图。要求别的解决办法。
望请高人伸出援助之手!

解决方案 »

  1.   

    1.只绘制可见部分
    2.内存DC提高效率要看你如何应用.你是把所有图绘在内存DC上,然后把需要显示的部分复制出来么?这样效率应该不会低,或者说在最开始绘制的时候效率会低,但后面的简单BitBlt效率不会低.
    3.只绘制无效部分,WM_PAINT时,并不是所有部分都绘制绘制,你可以判断哪部分需要重绘,对于图形内单个对象绘制比较复杂的情况来说,这样带来的效率提升非常明显.
      

  2.   

    顶3楼加一条:用一个线程在内存里绘图,尽量多绘;如果是文件,可能多次打开的话,也可以把运算后的数据保存成文件。还有选择函数:
    SetPixelV 比 SetPixel 快
    FillSolidRect 比 FillRect 快.....
      

  3.   

    MoveTo
    LineTo
    函数画出来的
      

  4.   

    大数据量的话要先做处理,比如一屏分辨率只有1000个点,但你要画10万个点,就要先处理一下,把10万个点用1000个数据来表示,然后只画这1000个数据。
    可以参考CoolEdit(Audition)的做法。
      

  5.   

     我给你出个主意。你呀 先设定一个 两倍或者更大的窗体空间 ,然后绘制图形 ,然后贴图 ,当选择了滚动 ,那么 你根据滚动先绘制图形 ,然后重新绘制内存的图形,这样速度就快多了 ,速度慢的主要问题是:大数据量的绘制占用时间,再就是 定位你绘制的开始点也占用大量时间 ,启动一个线程,来计算绘制的开始点,两外一个线程绘制内存 bmp ,足够 ,保准你 提高速度 70% 
      

  6.   

    用opengl吧,里面的显示列表可以解决你这个问题
      

  7.   

    肯定的 ,不过 我还是建议你采用 opengl 来实现 绘制 ,可能难度大 ,在绘制上没问题 ,采用线程来计算开始头数据点 ,跟尾数据点 ,基本就没问题了 ,这个线程 该如何启用 ,就看你想怎么处理
      

  8.   

    opengl东西没用过啊,哪有实例?我得先看看。各位拜托多多指教!