在 C# .NET 中访问屏幕尺寸时非常奇怪的行为



我在尝试访问 C# .NET 控制台应用程序中的系统屏幕尺寸时遇到了一些非常奇怪的行为。奇怪的是,我可以访问"System.Windows.SystemParameters.PrimaryScreenHeight"并获得一个正好是实际屏幕高度一半的双精度值,而我可以访问"System.Windows.Forms.Screen.PrimaryScreen.Bounds.Height"并获得一个双精度值,该值也恰好是实际屏幕高度的一半。单独调用,两个返回都是错误的...但是,如果我只是调用系统参数屏幕高度并将其保存到我再也不会触摸的虚拟双精度变量中,则 Forms.Screen 调用的返回会突然开始正常工作并返回准确的屏幕高度。

double dummyH = System.Windows.SystemParameters.PrimaryScreenHeight;
double dummyW = System.Windows.SystemParameters.PrimaryScreenWidth;
double height = Screen.PrimaryScreen.Bounds.Height;
double width = Screen.PrimaryScreen.Bounds.Width;
Console.WriteLine("System Param Height: " + dummyH);
Console.WriteLine("System Param Width: " + dummyW);
Console.WriteLine("System Screen Height: " + height);
Console.WriteLine("System Screen Width: " + width);

这是我发布的一个3分钟的YouTube视频:http://www.youtube.com/watch?v=y_HnF8f0GFQ&hd=1

谢谢!

您没有考虑显示器 DPI 缩放。您需要将其乘以此。

这是我 https://github.com/angelsix/fasetto-word/blob/develop/Source/Fasetto.Word/Window/WindowResizer.cs#L219 的做法,这是我做这件事的长视频 https://www.youtube.com/watch?v=TDOxHx-AMqQ

最新更新