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