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 项目中,必须手动添加对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;
}
}