Java - 如何检测某些多显示器设置的垂直位移?

标签 java windows dwm

在许多具有不同支架高度的多显示器设置中,可以在软件中调整显示器的垂直位置,以便它们的图形正确对齐。将垂直位移添加到 Windows 鼠标坐标以实现此效果;图中紫色所示: enter image description here 我正在构建一个程序,需要知道用户的鼠标何时到达任何监视器的顶部。我尝试使用 MouseInfo.getPointerInfo().getLocation().y==0,但是当监视器在软件中移位时,这将不起作用,因为监视器的顶部可能并不总是为零。

是否有可靠且有效的方法来识别多个显示器之间的偏移?

最佳答案

感谢@Siguza 的评论,我能够完成我想要完成的任务。简单来说,你可以找到Rectangle使用以下代码获取鼠标所在监视器的对象: MouseInfo.getPointerInfo().getDevice().getDefaultConfiguration().getBounds()

还可以使用 Windows 中显示器的数字索引找到每个显示器的矩形。代码 GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration().getBounds() 将返回主显示器的 Rectangle(索引 0),其他可以通过更改 GraphicsDevice 的索引来访问监视器

显示器的垂直位移位于Rectangle对象的.y属性中;该值可用于识别监视器的最顶层坐标。

@Siguza 的评论:

Haven't tested it, but according to the docs, GraphicsConfiguration.getBounds() sounds like what you're looking for. You should be able to get all monitors with GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenD‌​evices(), and their configurations with .getConfigurations(), but I idk how to choose from that array.

关于Java - 如何检测某些多显示器设置的垂直位移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40322941/

相关文章:

c# - 如何从 C# 或 VB.Net 使用 Win32 'DwmSetIconicThumbnail'?

c++ - 在 Windows 10 上使用 DWM API 时出现 Aero 字幕标题栏问题

Java swing 时间表管理器

java - 如何并排显示 2 个相机预览?[对于纸板应用]

java - 两个线程不同的运行方式并且同时工作

windows - 如何批量读取 CSV 文件特定列中的值?

delphi - 来自 DLL 的 DWM 交互

java - JAVA中如何从html文件中获取特定数据

windows - 如何将所有照片从驱动器复制到闪存驱动器

c - DOS 头表示为 C 数据结构