C# SystemInformation.VirtualScreen在Visual Studio之外时更改

C# SystemInformation.VirtualScreen在Visual Studio之外时更改,c#,winforms,visual-studio-2015,C#,Winforms,Visual Studio 2015,如何获得SystemInformation.VirtualScreen和Screen.PrimaryScreen.Bounds的结果,以便在Visual Studio内部和外部对WinForms应用程序执行相同的操作 private void ShowScreenSize() { MessageBox.Show( SystemInformation.VirtualScreen.ToString() ); } 当我在Visual Studio中运行上面的代码时,它显示:{X=0,Y=0,

如何获得
SystemInformation.VirtualScreen
Screen.PrimaryScreen.Bounds
的结果,以便在Visual Studio内部和外部对WinForms应用程序执行相同的操作

private void ShowScreenSize()
{
    MessageBox.Show( SystemInformation.VirtualScreen.ToString() );
}
当我在Visual Studio中运行上面的代码时,它显示:{X=0,Y=0,Width=3840,Height=2160}

当我在Visual Studio外部运行上述代码时,它显示: {X=0,Y=0,宽=3072,高=1728}

使用
Screen.PrimaryScreen.Bounds时,我也会得到相同的值差
我的操作系统是Windows 8.1,本机显示器分辨率是3840x2160

另外,我注意到当在VisualStudio内部运行时,应用程序的UI缩放是正常的,但在外部运行时会稍微拉伸。我猜VisualStudio会阻止内置的Windows UI扩展,因为我的系统配置为比最小值大一步的UI扩展。这可能会影响
SystemInformation.VirtualScreen
的值吗


我的最终目标是使用
Graphics.CopyFromScreen()
捕获整个桌面。我希望获得包含整个虚拟桌面中所有监视器的完整矩形。

可能是的副本。否,当我使用问题中确定的值时,结果会根据我在VisualStudio内部还是外部而变化。我的问题是如何使它在Visual Studio中的工作方式与在外部的工作方式相同?也许您应该尝试使用
SystemParameters.VirtualScreenWidth
属性,因为它似乎适合WPF应用程序(如果您有WPF应用程序)。否则,请忽略此项。;-)我正在运行WinForms应用程序,而不是WPF应用程序。我看不到SystemParameters对象。3840/3072=1.25。如果你不想被欺骗,你必须声明你的应用。