C#: ошибка при сохранении изображения в папку "Документы"
У меня есть изображение, отображаемое в моей форме 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.Runtime.InteropServices.ExternalException "произошло в System.Drawing.dll".
Затем я добавил несколько изменений в код, чтобы он выглядел так,
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. Я знаю, что это может быть не идеальный способ сделать это, но как мне установить его путь, чтобы он сохранял изображение в папке документов.
2 ответа
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 для получения дополнительной информации.