我有一个在 .NET 6 中创建的 WPF 应用程序,在 Windows 10 上运行
假设系统有两台显示器,其中一台显示器设置为 100% 缩放,另一台设置为 200% 缩放。如何获取应用程序窗口当前所在显示器的 DPI 缩放比例?
我尝试过在窗口经过的地方使用
VisualTreeHelper.GetDpi()
。但它始终返回主显示器的缩放比例(在 Windows 10 显示设置中选中“将此设为我的主显示器”的显示器)
将
app.manifest
文件添加到您的应用程序并打开每个显示器 DPI 感知,如 GitHub 上的 示例:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor</dpiAwareness>
</windowsSettings>
</application>
然后您应该能够使用
VisualTreeHelper.GetDpi
API 获取当前显示器的 DPI:
VisualTreeHelper.GetDpi(this).PixelsPerDip