每次用graphics绘出图形后,将窗体最小化再最大化一次,绘出来的图就消失了,或者拖着别的窗体在这个窗体上一抹之后,绘出来的图也是消失了。
请问要怎样才能做到绘出来的图不消失呢?

解决方案 »

  1.   

    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint (e);
    //绘图操作
    }
      

  2.   

    放到所画容器的paint事件中去,或者采用doublebuffer的方法,参看
    http://www.codeproject.com/cs/media/flickerFreeDrawing.asp
      

  3.   

    protected override void OnPaint(PaintEventArgs e)
    {
    base.OnPaint (e);
    //绘图操作
    }
    但是用上面的方法很占内存,很慢,而且容易死机我是先定义一个过程来绘图,然后在Form_load里加载它,但是,这样的做法就会出现楼主所说的问题,所以,1,要么用一楼所说的方法,2,要么就控制窗体不要最大小化,也不要让窗体可以拖动大小
      

  4.   

    重写OnPaint,计算无效区域,重绘时,只绘制无效区域的内容.