【发布时间】:2019-08-13 11:15:00
【问题描述】:
我有一个 WPF 窗口,它在具有不同分辨率的多台显示器上运行。当我将窗口从高分辨率显示器移动到低分辨率显示器时,它会很好,但不需要足够聪明来改变最大高度,反之亦然。
目前的要求很简单,可以根据我当前显示器的高度设置模态窗口的最大高度。
我已经测试了一些东西,比如
Screen.PrimaryScreen.WorkingArea.Height
Screen.PrimaryScreen.WorkingArea.Width
但它只给出了系统主屏幕的高度,我需要窗口当前所在的屏幕高度。
在多显示器中的一个主要问题是 windows 的 top 属性,在高分辨率显示器中它很好,但在低分辨率或辅助显示器中它从不同的数字开始,例如 160。
【问题讨论】:
-
在我们的应用程序中,我们通过 P/Invoke 使用来自 user32.dll 的以下函数
bool GetMonitorInfo(IntPtr hMonitor, MONITORINFO lpmi);IntPtr MonitorFromWindow(IntPtr handle, int flags);和IntPtr MonitorFromPoint(POINT point, int flags);来处理具有不同分辨率/dpi 的显示器上调整窗口大小的类似问题 -
@PavelAnikhouski 你能分享示例代码以及使用的参考吗,我很难找到 MONITORINFO 结构
-
@MegaMind:你看到this了吗?
-
我创建了一个帮助类来获取屏幕参数,您可以使用它来调整窗口大小。在此处查看此 SO 答案:Screen Parameters
标签: wpf