C#:将图像保存到Documents文件夹时出错

本文关键字:Documents 文件夹 出错 保存 图像 | 更新日期: 2023-09-27 18:20:36

我的C#窗体上显示了一个图像。当用户单击"保存图像"按钮时,会弹出一个Visual Basic输入框。我正在尝试为我的表单添加功能,允许用户在通过visual basic输入框输入图像名称时保存图像。

首先,我添加了这个代码,

private void save_image(object sender, EventArgs e)
    {
        String picname;
        picname = Interaction.InputBox("Please enter a name for your Image");            
        pictureBit.Save("C:''"+picname+".Png");                      
        MessageBox.Show(picname +" saved in Documents folder");
    } 

但是,当我运行程序并单击保存按钮时,它会出现以下异常:"System.Drawing.dll中发生了类型为"System.Runtime.InteropServices.ExternalException"的未处理异常。"

然后我对代码添加了一些更改,使其看起来像这样,

private void save_image(object sender, EventArgs e)
    {
        SaveFileDialog savefile = new SaveFileDialog();            
        String picname;           
        picname = Interaction.InputBox("Please enter a name for your Image");
        savefile.FileName = picname + ".png";
        String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        using (Stream s = File.Open(savefile.FileName, FileMode.Create))
        {
            pictureBit.Save(s, ImageFormat.Png);
        }
        //pictureBit.Save("C:''pic.Png");           
        MessageBox.Show(picname);                                
    }

当我运行这段代码时,它不再给出异常,而是将图像保存在我的c#->bin->debug文件夹中。我知道这可能不是理想的方法,但我如何设置它的路径,以便将图像保存在文档文件夹中。

C#:将图像保存到Documents文件夹时出错

String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
savefile.FileName = path + "''" + picname + ".png";

显示对话框的其他工作示例:

SaveFileDialog savefile = new SaveFileDialog();
String path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
savefile.InitialDirectory = path;
savefile.FileName = "picname";
savefile.Filter = "PNG images|*.png";
savefile.Title = "Save as...";
savefile.OverwritePrompt = true;
if (savefile.ShowDialog() == DialogResult.OK)
{
    Stream s = File.Open(savefile.FileName, FileMode.Create);
    pictureBit.Save(s,ImageFormat.Png);
    s.Close();
}

其他保存示例:

if (savefile.ShowDialog() == DialogResult.OK)
{
    pictureBit.Save(savefile.FileName,ImageFormat.Png);
}

如果没有设置路径,请参阅MSDN了解更多信息。