c# - 如何在 C# 中获得与 windows Display 相同的屏幕排列?
问题描述
我正在尝试以下代码:
foreach (var screen in Screen.AllScreens)
{
// For each screen, add the screen properties to a list box.
Console.WriteLine("Device Name: " + screen.DeviceName);
Console.WriteLine("Bounds: " + screen.Bounds.ToString());
Console.WriteLine("Working Area: " + screen.WorkingArea.ToString());
Console.WriteLine("Primary Screen: " + screen.Primary.ToString());
Console.WriteLine("=====================================================");
}
我明白了:
Device Name: \\.\DISPLAY1
Bounds: {X=3840,Y=0,Width=3840,Height=2160}
Working Area: {X=3840,Y=0,Width=3840,Height=2120}
Primary Screen: False
=====================================================
Device Name: \\.\DISPLAY2
Bounds: {X=-3840,Y=0,Width=3840,Height=2160}
Working Area: {X=-3840,Y=0,Width=3840,Height=2120}
Primary Screen: False
=====================================================
Device Name: \\.\DISPLAY3
Bounds: {X=0,Y=0,Width=3840,Height=2160}
Working Area: {X=0,Y=0,Width=3840,Height=2120}
Primary Screen: True
=====================================================
这很酷,但值似乎不匹配。这是我目前的安排。请注意,显示器 2 是主显示器。但是,C# 代码将 Display 3 显示为主要,这是错误的。
我假设 Screen 类中一定有一个错误(使用 .NET 4.8,Windows 10),那么像 Display 面板一样获取屏幕位置、边界、排列和主要/次要的更好方法是什么?
欢迎任何想法,谢谢!
解决方案
推荐阅读
- c# - Xceed.Document.Load 在为页眉、页脚和页边距返回的结果中引发 ArgumentOutofBounds 异常
- linux - gpg 不要求在 bash 脚本中输入密码
- spring-boot - 每当我在标头中发送访问令牌时,Docker spring boot 返回 401
- powershell - 设置内容附加到其他文件
- plotly - 在 Axes 坐标之间添加标签
- python - 在 .xlsx 文件中创建新工作表
- spring - Kafka Stream:无法从 Kafka 持久 keyValue 状态存储中获取数据
- maven - Maven WebService 客户端依赖
- react-native - 用按钮反应本机打开抽屉
- json - 为什么我的 WordPress 域只能在没有 www 的情况下使用,而不能与 www 一起使用?