说的不太明白,如果是其它的form盖住,那重写onpaint可定可以解决,但是如果你自己在同一个picturebox里面又画图将过去的图盖住,你再想恢复只能是再盖住之前就存起来,要得时候再花上。具体再详细点说你的问题吧!!

解决方案 »

  1.   

    你可以把你的绘图代码写在PICTUREBOX中的ONPAINT方法中,这样,当覆盖的窗口移开后,就能重新恢复.
      

  2.   

    但是,我根本就不知道,图片的那一部分被覆盖了,ONPAINT事件中写什么?
    我的图形很复杂,不可能全部写在ONPAINT事件中的
      

  3.   

    请看:
    http://expert.csdn.net/Expert/topic/1194/1194343.xml?temp=.7378046
      

  4.   

    但是,我根本就不知道,图片的那一部分被覆盖了,ONPAINT事件中写什么?
    我的图形很复杂,不可能全部写在ONPAINT事件中的你的问题的解决方法请参看
    Wrox C#高级编程
    GDI++那一章的最后一个代码范例!
    用invalid()
      

  5.   

    按你原来的方法(如果可重复),在onpaint中重画…… 如果你“画”的是“不可重复”的,可考虑图形拷贝等方法,把它放在另外的区域中在在上面的form挪开后在onpaint中重画
      

  6.   

    我试了一下,可行.给点分吧,不管有用否.
    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            PictureBox1.simage = Image.FromFile("c:\1.jpg")
            PictureBox1.Image = Image.FromFile("c:\1.jpg")
            PictureBox1.Speed = 300
            PictureBox1.Drawing(2)
        End Sub
      

  7.   

    我也遇到这样的问题,我刚想了一个思路 不知道行不行,就是将画出的图像赋给  picturebox1.Image
      

  8.   

    我已经解决了,就是把图像画到image中去,现在没有.net的环境,贴不了代码,简单写一下
    img = new bitmap("c:\\test.jpg")
    g=Graphics.FromImage(img)
    picturebox1_mousemove(){
    g.drawline(redpen,0,0,e.X,e.Y)
    }picturebox1_Paint()
    {
    picturebox1.images =img;
    }
      

  9.   

    我已经实现了VB中picturebox的AutoDraw的功能,现在在出差,等回去以后再贴代码