我正在构建一个 Java 应用程序来解决难题。我编码的方式基本上是程序将拍摄屏幕截图,在屏幕截图中找到一个像素,然后通过机器人功能将鼠标移动到桌面上的该位置。我理解拍摄屏幕截图、将其存储在数组中、探索数组直到弹出具有正确颜色组合的存储像素,并将鼠标移动到屏幕上的该位置的理论,但是我一生都无法得到代码下来。如果有人知道,或者可以将拍摄屏幕截图的示例代码组合在一起,将其存储在数组中(或者存储设备,我不知道数组是否最适合这种特定用途)从该数组中找到一个像素移动鼠标到像素位置,然后清除数组,我会非常高兴,因为这让我发疯!
到目前为止我已经:
public static void main(String[] args) 抛出异常{
Robot robot = new Robot();
{
private static Rectangle rectangle = new Rectangle(0, 0, 1075, 700);
{
BufferedImage image = r.createScreenCapture(rectangle);
search: for(int x = 0; x < rectangle.getWidth(); x++)
{
for(int y = 0; y < rectangle.getHeight(); y++)
{
if(image.getRGB(x, y) == Color.getRGB(195, 174, 196))
{
Robot.mouseMove(x, y);
break search;
}
}
}
}
}
我收到三个错误:
表达式开始非法,指示器指向下面的get in代码段
私有(private)静态矩形矩形=新矩形(Toolkit.getDefaultToolkit().getScreenSize());
表达式开始非法,指示器指向下面代码段中的 Size
私有(private)静态矩形矩形=新矩形(Toolkit.getDefaultToolkit().getScreenSize());
;预期指标指向 Rectangle 矩形
私有(private)静态矩形矩形=新矩形(Toolkit.getDefaultToolkit().getScreenSize());
最佳答案
创建屏幕截图并循环播放,但这并不难。 GraphicsDevice 的 Javadoc将告诉您如何获得正确的屏幕尺寸。
我认为你唯一不能做的就是响应“颜色事件”。您可以轮询屏幕以查看颜色何时发生变化。
import java.awt.Color;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.image.BufferedImage;
public class FindColor
{
private static Rectangle rectangle = new Rectangle(800, 600);
public static void main(String[] args) throws Exception
{
Robot r = new Robot();
BufferedImage image = r.createScreenCapture(rectangle);
search: for(int x = 0; x < rectangle.getWidth(); x++)
{
for(int y = 0; y < rectangle.getHeight(); y++)
{
if(image.getRGB(x, y) == Color.BLACK.getRGB())
{
r.mouseMove(x, y);
System.out.println("Found!");
break search;
}
}
}
}
}
-由于问题已扩展而进行编辑- 如果您要立即检查图像,则无需将图像写入磁盘。 BufferedImage已经有一种方法来访问各个像素,因此我认为不需要将像素数据转换为数组。
关于java - 用java响应颜色事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074566/