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

时间:2016-11-16 15:46:06

标签: c# screen-resolution dpi multiscreen

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

我尝试了很多课程/方法,但没有人给我正确的设置结果(Windows 10,主屏幕为1920x1080变焦125%,辅助屏幕(右侧)为1920x1080变焦100% )。

System.Windows.Forms.Screen给出了这些结果: - 第一屏的1920x1080分辨率(ok) - 第二屏的2400x1350分辨率(不好,应为1920x1080)

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

相同的结果

使用PInvoke,shcore.dll' s GetDpiForMonitor()会提供以下结果: - 第一屏120(好) - 第二屏120(不好,应该是96)

您是否知道如何做到这一点并获得正确的结果?

1 个答案:

答案 0 :(得分:1)

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

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

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

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