你的窗体最小化然后再最大化,整个窗体就重新绘制了,你刚才画上的东西当然都没了,你需要处理paint事件,重新绘制窗体。

解决方案 »

  1.   

    将  private void button2_Click(object sender, EventArgs e)
    放到pictureBox1.Onpaint中,private void button2_Click(object sender, EventArgs e)
    {
      pictureBox1.invalidate();
    }
      

  2.   

    你可以每次都先绘制到同一个image上,然后在paint事件的时候把这个image绘制到窗体上。
      

  3.   

    //楼主你想复杂了,直接绘制pictureBox中的image就可以了
    //参考如下代码:public Bitmap BoxBitmap = new Bitmap(100, 100);
    public Form1()
    {
        InitializeComponent();
        
        pictureBox1.Image = BoxBitmap;
    }private void button1_Click(object sender, EventArgs e)
    {
        Graphics vGraphics = Graphics.FromImage(BoxBitmap);
        vGraphics.FillRectangle(Brushes.White, 
            new Rectangle(0, 0, BoxBitmap.Width, BoxBitmap.Height));
        vGraphics.DrawLine(new Pen(Color.Black, 2), 
            new PointF(-1, -1), new PointF(100, 100));
        pictureBox1.Invalidate(); // 刷新
        BoxBitmap.Save(@"c:\temp\temp.bmp");
    }
      

  4.   

    to:zswang
       你说的这个方法我试验过,这样做一但在画图过程中涉及到图像优化问题就会处理得特别慢,画出来的图像不准确。所以还是要找第一个方法的解决办法!