Tag: 元素主机

如何将WPF大小转换为物理像素?

将WPF(分辨率无关)宽度和高度转换为物理屏幕像素的最佳方法是什么? 我在WinForms表单(通过ElementHost)中显示WPF内容,并试图找出一些大小的逻辑。 当操作系统以默认的96 dpi运行时,我已经可以正常工作了。 但是,当操作系统设置为120 dpi或其他分辨率时,它将不起作用,因为那么报告其宽度为96的WPF元素就WinForms而言将实际上是120像素宽。 System.Windows.SystemParameters上找不到任何“每英寸像素”设置。 我相信我可以使用相当于WinForms(System.Windows.Forms.SystemInformation),但有没有更好的方法来做到这一点(阅读:使用WPF API的方式,而不是使用WinForms API和手动做math)? 什么是将WPF“像素”转换为真实屏幕像素的“最佳方式”? 编辑:我也想在WPF控件显示在屏幕上之前这样做。 它看起来像Visual.PointToScreen可以给我正确的答案,但我不能使用它,因为该控件还没有parented,我得到InvalidOperationException“此Visual不连接到PresentationSource”。