Graphics dc = this.pictureBox1.CreateGraphics();
然后我用dc画了很多线条之类的。画完后,我将该Form最小化或者点击其他地方让这个窗体失去焦点。再打开后发现画的图像都不见了。为什么?

解决方案 »

  1.   

    你只是在那刻画了,并没有将信息记录下来,下次paint时再次绘制
    小化或者点击其他地方让这个窗体失去焦点,再打开,或是移动下窗口 都会触发再次paint
      

  2.   

    那该如何解决呢?让他可以一直显示在form窗体上
      

  3.   

    把要画的代码写道ONPAINT事件里面就好了
      

  4.   

    Graphics dc = e.Graphics
      

  5.   

    你的方法存在漏洞,漏了WINDOWS的窗口重绘机制。
    你只要在pictureBox1的paint事件处理函数中调用你的画图函数就可以解决了。
      

  6.   

    我在pictureBox1_Paint调用画图函数,但是还是无法显示阿,只是很快的显示了一下阿。如果使用Refresh的话,那么屏幕会一直得晃动。
      

  7.   

    还有一种方法,就是先动态生成一幅和PictureBox大小一样的位图,然后从这幅位图上生成一个Graphics 对象,然后画你想画的。
    最后把这幅位图作为PictureBox的Image属性,这样也能达到上面的目的。
    当然你在PictureBox的Resize事件处理程序中也要执行同样的代码
      

  8.   

    int x = 0
    int y = 0
    int width = pictureBox1.Width;
    int height = pictureBox1.Height; Bitmap bmp = new Bitmap(width,height);
    Graphics g = Graphics.FromImage(bmp);
    g.DrawRectangle(new Pen(Color.Gray,1),x,y,width - 1,height - 1);
    pictureBox1Image = bmp;
      

  9.   

    PictureBox是一个图画框,已经封装好了,你是不是应该在放PictureBox的窗体的ONPAINT里面重新画一下,或者宣布客户区无效,让WINDOWS自动重画,以前做过,现在忘了,大体思路应该没错吧
      

  10.   

    呵呵,需要将之前画的东东信息记录下来,onpaint里根据信息重新绘制
      

  11.   

    Samen168(卖女孩的小火柴) 说的能不能具体点,我用tangxuehua(netfocus) 的方法倒是挺容易实现的,谢谢。我现在想知道不用图像应该如何解决呢/??上面大家说得太概,能不能详细点.谢谢