我正在制作一个前景插件,并试图在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或计算中心?
由于
答案 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);