如何重置 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?的主要内容,如果未能解决你的问题,请参考以下文章
jPicker 在重置按钮上重置背景颜色以及如何一次打开单个 jPicker 对话框?