截屏时如何获取鼠标的确切位置?

问题描述

我正在开发Java后台自动化工具,当在屏幕上检测到特定图像时,该工具需要返回准确的鼠标位置。

我的逻辑当前看起来像这样:

    Point mousePoint;
    BufferedImage screenImage;
    Rectangle screenArea = getScreenArea();

    while(running) {
        mousePoint = MouseInfo.getPointerInfo().getLocation();
        screenImage = robot.createScreenCapture(screenArea);
        if(imageContainsKey(screenImage)) return mousePoint;
    }

此逻辑的问题是,当鼠标移动时,当鼠标位于稍后的位置时,将生成屏幕图像。鼠标移动得越快,差异越严重。

这是我试图解决此问题的方法

  • 缩小屏幕捕获区域以减少捕获图像的时间(鼠标位置差异仍然太大)
  • 尝试从屏幕捕获图像中检测鼠标位置(无法找到将鼠标图像作为屏幕捕获的一部分返回的java实现)
  • 在同时运行的单独线程中检索鼠标位置和屏幕图像(没有明显影响)

我尚未尝试的一种可能的解决方案是拥有一个单独的线程,该线程在屏幕捕获图像中可以检测到的当前鼠标位置连续绘制一个小点。但是,我希望有一个更好的(非hacky)解决方案来做到这一点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)