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();
}

Я разговариваю по телефону, поэтому не могу это проверить, прокомментируйте, если у вас есть проблемы

Другие вопросы по тегам