获取每个屏幕分辨率和缩放系数

Get each screen resolution and zoom factor

我正在尝试获得每个屏幕分辨率(例如:1920x1080)和缩放系数(例如:125% 或 120 dpi),而无需将应用程序从一个屏幕移动到另一个屏幕。

我已经尝试了很多 class/methods,但是 none 为我的设置提供了正确的结果(Windows 10,主屏幕为 1920x1080 缩放 125%,副屏幕(右侧)为 1920x1080 缩放 100%)。

System.Windows.Forms.Screen 给出了这些结果: - 第一个屏幕的 1920x1080 分辨率(确定) - 第二个屏幕的分辨率为 2400x1350(不行,应该是 1920x1080)

http://www.wpftutorial.net/ScreenResolutions.html

相同的结果

使用 PInvoke,shcore.dllGetDpiForMonitor() 给出了这些结果: - 第一个屏幕 120(确定) - 第二屏 120(不正常,应该是 96)

你知道我该怎么做并得到正确的结果吗?

我找到了解决方法:在注册表中,分辨率是正确的。

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\*\CONTROL\VIDEO\*\*

在那里,您可以找到 Attach.ToDesktop = 1 的当前屏幕。 然后,您可以使用 DefaultSettings.XResolutionDefaultSettings.YResolutionAttach.RelativeXAttach.RelativeY 来查找屏幕分辨率和定位。

要找到缩放系数,如果注册表中的分辨率与 System.Windows.Forms.Screen 中的分辨率相同,请使用 GetDpiForMonitor(),或者从两者中获取比率并将其乘以 96。