我如何从Visual Studio(C#)的显示设置中读取屏幕缩放比例(100%,125%,...)

时间:2019-07-12 08:35:42

标签: c# screen scale

我已经看过每个类似的问题,但对我来说都不起作用。我正在编写一个winForm,它将向我显示屏幕因素。我尝试从注册表中读取(不工作),我尝试使用DLL“ gdi32.dll”起作用,但仅在Win10上有效,而在Win7上无效。 我也尝试过:

float dpiX, dpiY;
using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
{
    dpiX = graphics.DpiX;
    dpiY = graphics.DpiY;
}

但是它也不起作用。 我知道这个问题是重复的,但是先前问题中的所有答案都无济于事,所以这就是为什么我要打开一个新的。 所以,有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

您可以将GetDpiForWindow与清单一起使用。

uint nDPI = GetDpiForWindow(this.Handle);

我得到=>

        100% : 96
        125% : 120
        150% : 144
        175% : 168

声明=>

    [DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
    public static extern uint GetDpiForWindow(IntPtr hwnd);

清单=>

  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
      <dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor</dpiAwareness>
     </windowsSettings>
  </application>