获取显示器 dpi 比例

问题描述 投票:0回答:1

我有一个在 .NET 6 中创建的 WPF 应用程序,在 Windows 10 上运行

假设系统有两台显示器,其中一台显示器设置为 100% 缩放,另一台设置为 200% 缩放。如何获取应用程序窗口当前所在显示器的 DPI 缩放比例?

我尝试过在窗口经过的地方使用

VisualTreeHelper.GetDpi()
。但它始终返回主显示器的缩放比例(在 Windows 10 显示设置中选中“将此设为我的主显示器”的显示器)

wpf dpi
1个回答
1
投票

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
© www.soinside.com 2019 - 2024. All rights reserved.