SP3 can';屏幕大小似乎不是用C#表示的?

SP3 can';屏幕大小似乎不是用C#表示的?,c#,screen,windows-8.1,tablet,C#,Screen,Windows 8.1,Tablet,我一直在开发一个在Windows上检索屏幕截图的简单应用程序。除了Surface Pro之外,我的代码在所有方面都非常有效。我似乎无法动态检索屏幕尺寸,无论发生什么情况,它似乎都无法为我提供一个1420x968工作区 Rectangle bounds = this.Bounds; //SP3 dimensions new Rectangle(0, 0, 2160, 1440); using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Hei

我一直在开发一个在Windows上检索屏幕截图的简单应用程序。除了Surface Pro之外,我的代码在所有方面都非常有效。我似乎无法动态检索屏幕尺寸,无论发生什么情况,它似乎都无法为我提供一个1420x968工作区

Rectangle bounds = this.Bounds; //SP3 dimensions new Rectangle(0, 0, 2160, 1440);

using (Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height))
{
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        g.CopyFromScreen(new Point(bounds.Left, bounds.Top), Point.Empty, bounds.Size);
    }
    bitmap.Save(dirToUse + accessionNumber + ".jpg", ImageFormat.Jpeg);
}

尝试在清单文件中告诉Windows您的应用程序支持DPI

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
   <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
             <dpiAware>true</dpiAware>
        </asmv3:windowsSettings>
   </asmv3:application>
</assembly>

如果看不到
this.Bounds
Bounds
的代码,我们就看不到问题代码。this.Bounds=表单边界。应该说明这是一个windows窗体应用程序,有一个窗体和一个控件,即webbrowser控件。如果您想要屏幕大小,请询问它,
screen.PrimaryScreen.Bounds
我没有要测试的windows 8。您的代码要求窗体的大小。在Windows 8上,Screen.PrimaryScreen.Bounds在窗体最大化时返回与此相同的.Bounds。发布的代码以及您的评论在Windows 8.1之前的所有内容上都非常有用。我要说的是,有一些扩展正在进行。再说一次,我没有Windows8可用,但我只能猜测。