2
你好,我正試圖讓我的JFrame上的特定像素的顏色。在屏幕Java上獲取像素顏色?
這是我的代碼。我的框架是紅色的。
我遇到的問題是當我點擊框架它應該返回紅色的RGB顏色是(255,0,0),但是當我點擊不同的點時,我有時會得到白色的RGB顏色(255,255,255 )我的代碼人有什麼問題?
public class guiTest extends JFrame
{
private static Shape ellipse;
private static Robot rb;
public guiTest()
{
super("4-connected approach");
setLayout(new FlowLayout());
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
setSize(800,800);
this.getContentPane().setBackground(Color.red);
setLocationRelativeTo(null);
addMouseListener(new MouseListener(){
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Pixel:"+e.getX()+","+e.getY());
try {
System.out.println(getPixel(e.getX(),e.getY()));
} catch (AWTException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
public static Color getPixel(int x,int y) throws AWTException{
Robot rb=new Robot();
return rb.getPixelColor(x, y);
}
public static void main(String[] args){
guiTest frame=new guiTest();
}
你不只是返回白色(255,255,255)。你的方法正在返回大量的顏色。我還得到(30,30,30),(69,70,110),(45,50,72)等等。我會說這就是你的問題所在('getPixel'方法)。也可能是背景顏色與像素近似的Swing問題。 – Gorbles
另外,爲什麼你需要像素顏色? 'this.getContentPane()。getBackground()'返回背景顏色集合。如果您渲染圖像,則需要獲取'Graphics'對象並從中獲取顏色信息。這完全取決於你在做什麼。 – Gorbles
我想要獲取像素顏色,因爲我想實現8連接的邊界填充算法,任何方法來準確地抓住特定像素的顏色? – user3323742