获取每个屏幕分辨率和缩放系数
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.dll
的 GetDpiForMonitor()
给出了这些结果:
- 第一个屏幕 120(确定)
- 第二屏 120(不正常,应该是 96)
你知道我该怎么做并得到正确的结果吗?
我找到了解决方法:在注册表中,分辨率是正确的。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\*\CONTROL\VIDEO\*\*
在那里,您可以找到 Attach.ToDesktop
= 1 的当前屏幕。
然后,您可以使用 DefaultSettings.XResolution
、DefaultSettings.YResolution
、Attach.RelativeX
和 Attach.RelativeY
来查找屏幕分辨率和定位。
要找到缩放系数,如果注册表中的分辨率与 System.Windows.Forms.Screen
中的分辨率相同,请使用 GetDpiForMonitor()
,或者从两者中获取比率并将其乘以 96。
我正在尝试获得每个屏幕分辨率(例如: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.dll
的 GetDpiForMonitor()
给出了这些结果:
- 第一个屏幕 120(确定)
- 第二屏 120(不正常,应该是 96)
你知道我该怎么做并得到正确的结果吗?
我找到了解决方法:在注册表中,分辨率是正确的。
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Hardware Profiles\*\CONTROL\VIDEO\*\*
在那里,您可以找到 Attach.ToDesktop
= 1 的当前屏幕。
然后,您可以使用 DefaultSettings.XResolution
、DefaultSettings.YResolution
、Attach.RelativeX
和 Attach.RelativeY
来查找屏幕分辨率和定位。
要找到缩放系数,如果注册表中的分辨率与 System.Windows.Forms.Screen
中的分辨率相同,请使用 GetDpiForMonitor()
,或者从两者中获取比率并将其乘以 96。