我的程序要在视图上画图形和图片,而且支持用户拖动其中的图形,每次拖拽都将导致图形全部重画.
当图片很多时,更新视图显示的操作非常慢,因为要把文档中的所有图形和图片都要重画一次,尤其是往CDC对象上画图片是很慢的操作,界面要停顿时间随着图片个数的增多而增加.影响用户使用.老板要求必须解决,否则有可能被抄了,请问各位大虾,如何解决这个问题,谢谢

解决方案 »

  1.   

    如果是在OnPaint里面画的话。
    你可以的重画的区域是被windows限定的,这个区域的大小可以从
    GetClipBox获得。
    你重画在其他的区域都是没有任何效果的。
    所以你只需要重画这部分需要更新的区域即可。
    这样可以减少很多的重画工作。再就是用双缓冲的方法。
    在本版搜索就有很多相关的帖子。
      

  2.   

    用双缓冲区加一个刷新标记,当标记为FALSE的时候,仅仅把内存DC的内容bitblt到当前DC
      

  3.   

    在另外一个 CD上画画,然后 bitblt到目标DC就行了。
      

  4.   

    先在内存中建立一个影射的DC,先在DC中画图,然后把更新过的局部地方bitblt到屏幕上(视图).