private void p1_Paint(object sender, PaintEventArgs e)
    {
      //dgvCase.ClearSelection();
      //显示绘制的图形
      //将Image中保存的图像,绘制出来
      Graphics g = p1.CreateGraphics();
      if (backImage != null)
      {
        g.Clear(Color.White);
        g.DrawImage(backImage, p1.ClientRectangle);          
        try
        {
          backImage.Save("d:\\2.bmp", ImageFormat.Bmp);
        }
        catch (Exception ba)
        {
          MessageBox.Show(ba.Message);//总提示GDI+一般性错误。
        }
      }
    }
}
但我做的另外一个保存图像的DEMO中也是这样写的,就没有这种错误提示。郁闷。

解决方案 »

  1.   

    你在Paint里写..一直保存这个文件做什么.... Paint事件会不停的执行 .也就是你在不停的覆盖2.bmp...
    换成别的事件.让Save不在一直执行.
      

  2.   

    你把  backImage.Save("d:\\2.bmp", ImageFormat.Bmp); 注释了把这行换到 BUTON下看看 另外backImage是那来的
      

  3.   

    换到button下也是一样。另外backImage是个窗体变量,用来记录p1(一个panel来画图)中的image。
      

  4.   

    试下来没有任何问题么using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Imaging;namespace WindowsFormsApplication11
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                          
            }        private void pictureBox1_Paint(object sender, PaintEventArgs e)
            {
                Bitmap backImage = new Bitmap(500, 500);
                Graphics g = pictureBox1.CreateGraphics();
                if (backImage != null)
                {
                    g.Clear(Color.White);
                    g.DrawImage(backImage, pictureBox1.ClientRectangle);
                    try
                    {
                        backImage.Save("d:\\2.bmp", ImageFormat.Bmp);
                    }
                    catch (Exception ba)
                    {
                        MessageBox.Show(ba.Message);//总提示GDI+一般性错误。 
                    }
                }         }
        }
    }
      

  5.   

    不过
    pictureBox1.CreateGraphics();
    有点
      

  6.   

     另外backImage是那来的 
    如果你的backImage是  Image.FormFile(@"d:\\2.bmp"); 来的把..你再正使用这个文件呢取图片用这样取看看
     Image backImage = Image.FromStream(new MemoryStream(File.ReadAllBytes(@"c:\1.png"))); backImage.Save(@"c:\1.png", ImageFormat.Png);
      

  7.   

    我的blog里有终极解决办法
    大体上这样的:与生成bitmap位图的方式有关其中bmp2是你要用的位图,
    Bitmap bmp = new Bitmap(filePath);
     //新建第二个bitmap类型的bmp2变量,我这里是根据我的程序需要设置的。
    Bitmap bmp2 = new Bitmap(1024, 768, PixelFormat.Format16bppRgb555);
    //将第一个bmp拷贝到bmp2中
    Graphics draw = Graphics.FromImage(bmp2);
    draw.DrawImage(bmp,0,0); 这时你保存就不会发生GDI+错误
    bmp2.Save(path);