【问题标题】:Get each screen resolution and zoom factor获取每个屏幕分辨率和缩放系数
【发布时间】:2023-04-11 03:02:02
【问题描述】:

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

我尝试了很多类/方法,但没有一个为我的设置提供正确的结果(Windows 10,主屏幕为 1920x1080 缩放 125%,辅助屏幕(右侧)为 1920x1080 缩放 100%)。

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

http://www.wpftutorial.net/ScreenResolutions.html 的结果相同

使用 PInvoke,shcore.dll 的 GetDpiForMonitor() 会给出以下结果: - 第一个屏幕 120 (ok) - 第二屏为 120(不行,应该是 96)

您知道我该如何做到这一点并获得正确的结果吗?

【问题讨论】:

    标签: c# screen-resolution dpi multiscreen


    【解决方案1】:

    我找到了解决办法:在注册表中,解析是正确的。

    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。

    【讨论】:

      猜你喜欢
      • 2016-07-27
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多