【问题标题】:C# Capturing Screenshot with zoom enabled in Windows在 Windows 中启用缩放的 C# 捕获屏幕截图
【发布时间】:2013-09-12 09:10:43
【问题描述】:

我刚刚开始编写这个小 C# 程序,目的无关紧要。现在它尝试制作整个屏幕的屏幕截图,它成功了......有点......

问题是我正在运行 200% 缩放的 Windows(不,我的视力并不差),当我运行此代码时,我只保存了 1/4 的屏幕(左上部分),而不是整体如预期。我非常确定这与 200% 缩放有关,我想问是否有人可以提出解决方法,以便它实际上捕获我的整个屏幕。代码如下:

        string savePath = @"C:\Users\eltaro\Desktop\ScreenShot "+DateTime.Now.ToString("yyyy-MM-dd")+" at "+DateTime.Now.ToString("HH.mm")+".bmp";
        bmpImage = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
        gfxScreenshot = Graphics.FromImage(bmpImage);
        gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0,
            Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
        bmpImage.Save(savePath, System.Drawing.Imaging.ImageFormat.Bmp);

【问题讨论】:

  • 您应该验证CopyFromScreen 是否仍然泄漏句柄。如果您继续捕获屏幕截图,并且确实如此,您最终会用完句柄。

标签: c# windows zooming screenshot imaging


【解决方案1】:

所以,这个问题最终被我的朋友解决了,但由于他不住在这里,我会自己写答案。

溶剂实际上在app.manifest中,这一行完全解决了问题:

true

【讨论】:

  • 我也有同样的问题。我正在 WPF 桌面应用程序中工作
【解决方案2】:

来自 MSDN:Graphics.CopyFromScreen(Int32, Int32, Int32, Int32, Size):将对应于像素矩形的颜色数据从屏幕执行位块传输到 Graphics 的绘图表面。 "

在使用缩放屏幕或多台显示器时,您必须自己定义。 Screen.PrimaryScreen.Bounds.Width,因为这个常量定义了屏幕的大小/屏幕的分辨率。

希望这会有所帮助。

【讨论】:

  • 这是我的代码的结果,未经编辑:puu.sh/4piTs.bmp 这是如果我将 Screen.PrimaryScreen.Bounds.Width & Height 切换到 2880 和 1800 的结果:puu.sh/4piVl.bmp
  • 所以,换句话说,如果您不查看图像,如果我将值更改为宽度值 2880 和高度值 1800,屏幕截图将变为全尺寸,但仍然只取上部左边部分,用黑色填充其余部分。
  • 您在 CopyFromScreen() 方法中也设置了相同的值。参数改了吗?
  • ^在你提到它之前还没有这样做。我现在试过了,现在整个截图都是黑色的O_o
【解决方案3】:

设置

Screen.WorkingArea
Bitmap bmpImage = new Bitmap(Screen.AllScreens[0].WorkingArea.Height, Screen.AllScreens[0].WorkingArea.Width, PixelFormat.Format32bppArgb);

http://msdn.microsoft.com/en-us/library/system.windows.forms.screen.workingarea.aspx

截图

【讨论】:

  • 很抱歉,这对捕获的屏幕截图没有任何影响。它仍然只占屏幕左上角的 1/4。此外,您混淆了高度和宽度的位置。他们恰恰相反。
猜你喜欢
  • 1970-01-01
  • 2018-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多