Windows的高DPI支持是通过DWM(Desktop Window Manager)缩放实现的,但是有时候我们不希望这种效果(例如缩放会使一些内容变得模糊),因此需要禁用Windows高DPI对程序的缩放。有两种方式可以实现这种效果:一个是使用应用程序清单文件,一个是使用系统API实现。
1、使用清单文件
这里以Winform为例,右键项目->添加->新建项->应用程序清单文件,将含有dpiAware标签的属性取消注释,代码如下:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
</windowsSettings>
</application>
2、使用系统API
下面的代码对Win7及以上的系统禁用高DPI。
if (Environment.OSVersion.Version.Major >= 6)
{
SetProcessDPIAware();
}
[DllImport("user32.dll")]
public static extern bool SetProcessDPIAware();