通过 VB 2010 应用程序强制 XP 样式 DPI 缩放?

通过 VB 2010 应用程序强制 XP 样式 DPI 缩放?

我有一个 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注册表项。

如果字体缩放对于您的应用程序至关重要,请考虑渲染您自己的文本并使用其缩放尺度变换

相关内容