我正在尝试在Mac OS X中创建类似于DigitalColor Meter的应用程序。
(注意:DigitalColor Meter是Mas OS的一个小型应用程序,用于在鼠标光标下方拾取像素颜色)。
为了用Java实现它,我尝试使用AWTRobot getPixelColor(),但是getPixelColor()似乎效率不高。下面是我的代码:
public class AWT_Robot {
public static void main(String[] args) {
int mouseX = 0;
int mouseY = 0;
try {
Robot robot = new Robot();
while(true){
robot.delay(1000);
mouseX = MouseInfo.getPointerInfo().getLocation().x;
mouseY = MouseInfo.getPointerInfo().getLocation().x;
Color color = robot.getPixelColor(mouseX, mouseY);
System.out.println("x: "+mouseX+" y: "+mouseY+" RGB: ("+color.getRed()+", "+color.getGreen()+", "+color.getBlue()+")");
}
} catch (AWTException e) {
e.printStackTrace();
}
}
}
当我将鼠标悬停在红色图像(RGB:243,0,0)上时,它以不同的RGB打印,如下所示:
x: 313 y: 313 RGB: (239, 0, 0)
x: 313 y: 313 RGB: (239, 0, 0)
x: 294 y: 294 RGB: (239, 0, 0)
x: 186 y: 186 RGB: (79, 116, 163)
x: 104 y: 104 RGB: (67, 104, 154)
x: 116 y: 116 RGB: (79, 117, 164)
x: 159 y: 159 RGB: (68, 105, 155)
1)这个问题背后的原因可能是什么?
2)还有其他方法可以用Java实现该应用程序(DigitalColor Meter)吗?
我在下面的链接中找到了类似的问题,但是似乎没有一个我期望的答案。
java robot.getPixelColor(x,y) question
awtrobot reads incorrect colors
How does Robot's getPixelColor(int x, int y) method work?
最佳答案
您的mouseX
和mouseY
都使用getLocation().x
获取。这可能是造成您问题的原因。