【问题标题】:Getting DPI from an outlook application从 Outlook 应用程序获取 DPI
【发布时间】:2016-02-09 01:30:30
【问题描述】:

我正在制作一个 Outlook 插件,并试图在 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 或计算中心?

谢谢

【问题讨论】:

  • 我实际上取消了第一个答案,因为实际上还没有可见的控件,但是对于这种情况,还有另一种解决方案。去看看!
  • 感谢@SimonMourier 这个解决方案确实帮助了我!

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


【解决方案1】:

这里实际上提出了一个很好的解决方案: 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    • 2023-03-04
    • 2012-05-17
    • 1970-01-01
    • 2017-06-26
    • 2015-04-21
    • 2011-05-03
    相关资源
    最近更新 更多