WPF:截取屏幕截图并保存

本文关键字:保存 屏幕截图 截取 WPF | 更新日期: 2023-09-27 18:30:39

我是 WPF 应用程序的新手,我尝试四处寻找是否可以找到适合此的东西,但到目前为止,我还没有发现任何有效的东西(我想这是因为其中大部分已经过时了)。我想截取整个桌面(即所有显示器)的屏幕截图,并将其作为.jpg保存到特定文件夹,并在单击屏幕截图按钮时将时间和日期作为文件名。我能够在我的 Windows 窗体应用程序中实现这一点,但无法使用我的 WPF 应用程序做到这一点。

这是我用于 Windows 窗体应用程序的代码。

int screenLeft = SystemInformation.VirtualScreen.Left;
int screenTop = SystemInformation.VirtualScreen.Top;
int screenWidth = SystemInformation.VirtualScreen.Width;
int screenHeight = SystemInformation.VirtualScreen.Height;
using (Bitmap bmp = new Bitmap(screenWidth, screenHeight))
{
    using (Graphics g = Graphics.FromImage(bmp))
    {
        String filename = "ScreenCapture-" + DateTime.Now.ToString("ddMMyyyy-hhmmss") + ".png";
        Opacity = .0;
        g.CopyFromScreen(screenLeft, screenTop, 0, 0, bmp.Size);
        bmp.Save("C:''ScreenShots''" + filename);
        Opacity = 1;
    }
}

任何帮助将不胜感激。

WPF:截取屏幕截图并保存

在 WPF 项目中,必须手动添加对System.Drawing.dll库的引用。为此,项目>"添加引用">"程序集"选项卡(框架)>检查所需的库。

此外,您的代码只需要进行一些调整,但想法是正确的。

        double screenLeft = SystemParameters.VirtualScreenLeft;
        double screenTop = SystemParameters.VirtualScreenTop;
        double screenWidth = SystemParameters.VirtualScreenWidth;
        double screenHeight = SystemParameters.VirtualScreenHeight;
        using (Bitmap bmp = new Bitmap((int)screenWidth,
            (int)screenHeight))
        {
            using (Graphics g = Graphics.FromImage(bmp))
            {
                String filename = "ScreenCapture-" + DateTime.Now.ToString("ddMMyyyy-hhmmss") + ".png";
                Opacity = .0;
                g.CopyFromScreen((int)screenLeft, (int)screenTop, 0, 0, bmp.Size);
                bmp.Save("C:''Screenshots''" + filename);
                Opacity = 1;
            }
        }