该参数对saveFileDialog无效

时间:2018-11-20 20:44:28

标签: c# winforms

我有一个按钮,用于保存我拥有的pictureBox的图像。

这是代码:

private void btnGuardaImatge_Click(object sender, EventArgs e)
{
    using (SaveFileDialog saveFileDialog = new SaveFileDialog())
    {
        saveFileDialog.InitialDirectory = "c:\\";
        saveFileDialog.Filter = "Bitmap (*.bmp)|*.bmp| Png| *.png| Tots els fitxers(*.*)|*.*";
        saveFileDialog.FilterIndex = 1;

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            Bitmap b = new Bitmap(saveFileDialog.FileName);
            pctOriginal.Image = b;
            this.imatge = b;
        }
    }
}

但是它总是在if()块的第一行中给我这个错误:

  

System.ArgumentException:'参数无效。'

我尝试了以下方法:

Bitmap b = new Bitmap(Filename: saveFileDialog.FileName);

但是没有运气...有什么想法吗?

1 个答案:

答案 0 :(得分:2)

代码试图执行的操作与您说的代码应该尝试执行的操作之间存在冲突。

一方面,我们有这个:

  

按钮,用于保存图片框的图像

以及使用SaveFileDialog

另一方面,我们有这个:

Bitmap b = new Bitmap(saveFileDialog.FileName);
pctOriginal.Image = b;
this.imatge = b;

这将打开文件中的现有图像并将其显示在PictureBox中,而不是将PictureBox保存到文件中。

它们是完全相反的。

如果要使用前者,则需要这样做:

private void btnGuardaImatge_Click(object sender, EventArgs e)
{
    using (SaveFileDialog saveFileDialog = new SaveFileDialog())
    {
        saveFileDialog.InitialDirectory = "c:\\";
        saveFileDialog.Filter = "Bitmap (*.bmp)|*.bmp| Png| *.png| Tots els fitxers(*.*)|*.*";
        saveFileDialog.FilterIndex = 1;

        if (saveFileDialog.ShowDialog() == DialogResult.OK)
        {
            pctOriginal.Image.Save(saveFileDialog.FileName, ImageFormat.Jpeg);
        }
    }
}

如果要使用后者,请尝试使用OpenFileDialog代替SaveFileDialog