我在视图内画一副图, 但是当我拖动滚动条时,闪烁的很厉害。如何避免这个,同时又刷新视图。

解决方案 »

  1.   

    在OnDraw中使用双缓冲进行绘图,同时只绘制需要绘制的部分。
      

  2.   

    滚动条的消息响应函数中
    调用Invalidate()的时候传一个参数FALSE试试看
      

  3.   

    1. 去掉背景刷:重载WM_ERASEBKGND消息响应OnEraseBkgnd,去掉所有语句,直接return TRUE;
    2. 当有多个绘图动作时使用双缓冲。
      

  4.   

    使用双缓冲,重载WM_ERASEBKGND使得背景不重画
    双缓冲的意思就是先把你要画的内容输出到一个内存dc中,画完后,再一次过把内存dc的内容用BitBlt函数拷贝到你要显示的视图里
      

  5.   

    Flicker Free Drawing In MFC
    http://www.codeproject.com/gdi/flickerfree.asp
     
    Further discussions on flicker free drawing
    http://www.codeproject.com/vcpp/gdiplus/what_is_a_basename_.asp