我是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;
}
}
任何帮助都将不胜感激。
答案 0 :(得分:7)
在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;
}
}