如何重置 VisualTreeHelper.GetDpi() 以返回真正的 DPI?

Posted

技术标签:

【中文标题】如何重置 VisualTreeHelper.GetDpi() 以返回真正的 DPI?【英文标题】:How can I reset VisualTreeHelper.GetDpi() to return the true DPI? 【发布时间】:2021-09-23 13:00:20 【问题描述】:

在 WPF 应用程序中,VisualTreeHelper.GetDpi() 在应用程序启动时获取 dpi。即使用户同时在设置 -> 显示中更改了 dpi,后续调用也会返回相同的值。

如何“重置”VisualTreeHelper.GetDpi() 看到的 dpi而不重新启动应用程序

一些代码:

Title = VisualTreeHelper.GetDpi(this).DpiScaleX.ToString();

【问题讨论】:

这能回答你的问题吗? ***.com/a/1918890/6734762 你可以试试看source是干什么的。 你试过原生的GetDpiForWindow API吗? 你在 app.manifest 中设置了 dpiAwareness 吗? dpi 格局已经发展了多年,而 WPF 不知何故陷入了过去。我在这里写了一堆DPI工具:***.com/a/32888078/403671 【参考方案1】:

添加每个显示器的 dpi 感知可修复模糊。它也解决了这个问题。为什么,我不确定,因为即使使用单个显示器也存在此问题。但它有效。

您需要为此添加一个 app.manifest 文件。

【讨论】:

以上是关于如何重置 VisualTreeHelper.GetDpi() 以返回真正的 DPI?的主要内容,如果未能解决你的问题,请参考以下文章

alpine cde-150c如何重置与退出演示模式?

如何重置PyCharm的报错系统?

jPicker 在重置按钮上重置背景颜色以及如何一次打开单个 jPicker 对话框?

如何在单击重置时将 Material UI Autocomplete 重置为默认值/初始值?

安卓虚拟机,如何重置硬件设备信息

Firebase Auth 密码重置:如何正确发送包含确认码的密码重置电子邮件?