C#中 Graphics对象调用Dispose()方法后,为什么窗体绘制的图像还在?Dispose()方法不是已经将Graphics对象清除了吗?
请大虾根据这个问题,详细解释下原理,谢谢。
Graphics objGraphics = null ;
objGraphics = this.CreateGraphics();
objGraphics.Clear(SystemColors.Control);
objGraphics.DrawRectangle(Pens.Blue,a.Left-1,a.Top-1,a.Width+1,a.Height+1);
objGraphics.Dispose();//执行完这句后,为什么绘制的图像还在?

解决方案 »

  1.   


    用using试试
    using (Graphics objGraphics = this.CreateGraphics)
    {
        //其它代码
    }或者用个trycatch。finallytry
    {}
    catch()
    {}
    finally
    {
       if(objGraphics  != null)
         ((IDisposable)objGraphics).Dispose();
    }
      

  2.   

    Graphics objGraphics = null ;
    objGraphics = this.CreateGraphics();
    objGraphics.Clear(SystemColors.Control);
    objGraphics.DrawRectangle(Pens.Blue,a.Left-1,a.Top-1,a.Width+1,a.Height+1);
    objGraphics.Dispose();//执行完这句后,为什么绘制的图像还在?
    this.invlaidate()
      

  3.   


    其实我主要想知道Dispose()方法为什么对Graphics对象没有影响,矩形是在Graphics对象里存储的,为什么释放资源了,显示器上的图像还在