C# WPF - Как сохранить скриншот текущего представления интерфейса вашей программы?
Я пытаюсь включить в своей программе опцию "Сохранить текущий снимок", в которой изображение интерфейса моей программы сохраняется в нужном месте. Это для справочных целей, например, если кто-то не хочет открывать программу, чтобы увидеть результат, который он уже получил.
У меня уже есть функция скриншота программы, я просто не знаю, как реализовать ее с помощью SaveFileDialog для сохранения изображения.
Функция скриншота:
private static BitmapSource CopyScreen()
{
using (var screenBmp = new Bitmap(
(int)SystemParameters.PrimaryScreenWidth,
(int)SystemParameters.PrimaryScreenHeight,
System.Drawing.Imaging.PixelFormat.Format32bppArgb))
{
using (var bmpGraphics = Graphics.FromImage(screenBmp))
{
bmpGraphics.CopyFromScreen(0, 0, 0, 0, screenBmp.Size);
return Imaging.CreateBitmapSourceFromHBitmap(
screenBmp.GetHbitmap(),
IntPtr.Zero,
Int32Rect.Empty,
BitmapSizeOptions.FromEmptyOptions());
}
}
}
Код SaveFileDialog:
SaveFileDialog saveImage = new SaveFileDialog();
saveImage.Filter = "Images|*.png;*.bmp;*.jpg";
saveImage.ShowDialog();
Может ли кто-нибудь помочь мне с сохранением изображения в выбранном пользователем месте? Благодарю.
1 ответ
Вы можете использовать ссылочный код в комментарии.
Используйте диалоговое окно сохранения, чтобы получить желаемый путь, и делайте то же, что и комментарии @Zack.
// If the file name is not an empty string open it for saving.
if(saveImage.FileName != "")
{
System.IO.FileStream fs = System.IO.File.Open(saveImage.FileName, System.IO.FileMode.OpenOrCreate);
Screenshot.Save(fs, System.Drawing.Imaging.ImageFormat.Bmp);
fs.Close();
}
Я разговариваю по телефону, поэтому не могу это проверить, прокомментируйте, если у вас есть проблемы