重载BOOL CGraphView::OnEraseBkgnd(CDC* pDC) 
{


//return CView::OnEraseBkgnd(pDC);
return true;
}
试试!

解决方案 »

  1.   

    画线的过程中不要调用 Invalidate();
    你说的不刷新就会留下许多线的问题,可以通过独云的方法解决
    实际上就是通过异或的方式,把原来的线清除掉
    CClientDC dc(this);
    int nDrawMode=dc.GetROP2();
    dc.SetROP2(R2_NOT);
             //重画原来画的线
    dc.SetROP2(nDrawMode);
             //再画新线
      

  2.   

    to 秋水:
    谢谢你的方法,我试了,但是只画了一条线就不画了
    CClientDC dc(this);
    int nDrawMode=dc.GetROP2();
    MemDC.SetROP2(R2_NOT);
    MemDC.MoveTo(0,Oldpoint.y-View_hi/8);
    MemDC.LineTo(Graph_wi,Oldpoint.y-View_hi/8);
    MemDC.MoveTo(Oldpoint.x-View_wi/18,0);
    MemDC.LineTo(Oldpoint.x-View_wi/18,Graph_hi);

    MemDC.SetROP2(nDrawMode);
    MemDC.MoveTo(0,point.y-View_hi/8);
    MemDC.LineTo(Graph_wi,point.y-View_hi/8);
    MemDC.MoveTo(point.x-View_wi/18,0);
    MemDC.LineTo(point.x-View_wi/18,Graph_hi); Oldpoint.x=point.x;
    Oldpoint.y=point.y;
      

  3.   

    应该在绘图使用双缓存
    建立两个DC,DC1,DC2;
    将DC1,DC2刷黑,
    并在DC1画线,
    然后把DC1,画到DC2上
    在把DC2画到当前的设备DC,如OnDraw中的pDC
      

  4.   

    你重载一下,OnPaint(CDC dc),在里面调用OnDraw(CDC *pDC),效果可能会好一些,因为CPainDC 只会重画剪裁区域的部分,不重新刷新整个客户区