首页 > 解决方案 > 如何在 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#.netwinapiscreen-resolutionmultiple-monitors

解决方案


推荐阅读