从Outlook应用程序获取DPI

时间:2015-11-08 07:06:31

标签: .net wpf interop office-interop outlook-addin

我正在制作一个前景插件,并试图在Outlook的中心放置一个窗口。 为了达到这个目的,我曾经做过以下几点:

Outlook.Application olApp;
...
dynamic activeWindow = olApp.ActiveWindow();
wpf_ui_control.Left = activeWindow.Left + (activeWindow.Width / 2) - (wpf_ui_control.Width / 2);
wpf_ui_control.Top = activeWindow.Top + (activeWindow.Height / 2) - (wpf_ui_control.Height / 2);
当然,当DPI不是100%时,这被证明是无用的。

我已经看到了一些从不同控件获取DPI的示例,但没有来自outlook.explorer \ outlook.Inspect(.ActiveWindow()的结果)。

在这种情况下,如何获得DPI或计算中心?

由于

1 个答案:

答案 0 :(得分:0)

这里提出了一个很好的解决方案: How can I get the DPI in WPF?

var dpiXProperty = typeof(SystemParameters).GetProperty("DpiX", BindingFlags.NonPublic | BindingFlags.Static);
var dpiYProperty = typeof(SystemParameters).GetProperty("Dpi", BindingFlags.NonPublic | BindingFlags.Static);

var dpiX = (int)dpiXProperty.GetValue(null, null);
var dpiY = (int)dpiYProperty.GetValue(null, null);