我有一个 vb.net 2010 应用程序。在 Windows 7 计算机上,UI 在高达 120 dpi(125%)的分辨率下都可以正常显示,因为 Windows 7 默认对小于或等于 120 的 dpi 值启用“xp 样式 dpi 缩放”。对于 >120 dpi 的值,UI 对象会错位且模糊,除非用户在显示设置中手动选中(启用)“xp 样式 dpi 缩放”选项。出于同样的原因,“.DpiX”对于 <=120 dpi 返回正确的数字,而对于任何 >120 dpi 的值返回 96,除非我再次手动启用该选项。
我想知道是否有任何方法(例如,通过清单)强制窗口对每个 dpi 值使用 XP 样式 dpi 缩放?
答案1
尝试在清单中使用以下设置
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
如果您希望更改 Windows 的设置,则必须操作HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontDPI
注册表项。
如果字体缩放对于您的应用程序至关重要,请考虑渲染您自己的文本并使用其缩放尺度变换