我已经看过每个类似的问题,但对我来说都不起作用。我正在编写一个winForm,它将向我显示屏幕因素。我尝试从注册表中读取(不工作),我尝试使用DLL“ gdi32.dll”起作用,但仅在Win10上有效,而在Win7上无效。 我也尝试过:
float dpiX, dpiY;
using (Graphics graphics = Graphics.FromHwnd(IntPtr.Zero))
{
dpiX = graphics.DpiX;
dpiY = graphics.DpiY;
}
但是它也不起作用。 我知道这个问题是重复的,但是先前问题中的所有答案都无济于事,所以这就是为什么我要打开一个新的。 所以,有人可以帮我吗?
答案 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>