鼠标单击Graphics后获取单个像素的颜色

时间:2015-02-09 09:38:17

标签: java awt mouselistener

当我用鼠标点击某个点时,我正试图获得单个像素的颜色。

我正在使用Graphics并且我成功绘制了一个500x500的红色形状,但当我尝试在mouseX / mouseY位置(红色形状上方)获取像素的颜色时我画了它打印出(0,0,0)而不是红色RGB值。

    public void getColor(int mouseX, int mouseY)
    {
        Color myColor = Color.RED;
        globalGraphics.setColor(myColor);
        globalGraphics.fillRect(0,0,500,500);
        int color = getRGB(mouseX, mouseY);
        int red = (color >> 16) & 0x000000FF;
        int green = (color >>8 ) & 0x000000FF;
        int blue = (color) & 0x000000FF;
        System.out.println(red+" "+green+" "+blue);         
    }

    public void mouseClicked(MouseEvent e)
    {
        int mouseY = e.getY();
        int mouseX = e.getX();
        getColor(mouseX,mouseY);
    } 

1 个答案:

答案 0 :(得分:0)

如果我没记错的话,<0> 0,0,0是黑色的,这正是鼠标所在像素的颜色,因为鼠标是黑色的,所以我会测试鼠标干扰你的测量并试试mouseX- 1,mouseY-1