2
안녕하세요 저는 JFrame에서 특정 픽셀의 색상을 얻으려고합니다.화면의 픽셀 색상을 Java로 가져 오기?
이것은 내 코드입니다. 내 프레임은 빨간색입니다.
프레임을 클릭하면 (255,0,0) 빨간색의 RGB 색상을 반환해야하지만 다른 점을 클릭하면 가끔은 흰색 (255,255,255)의 RGB 색상을 얻습니다.) 내 코드 사람의 문제는 무엇입니까?
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' 메서드). 배경색 대 픽셀 근사를 가진 스윙 문제 일 수도 있습니다. – Gorbles
또한 왜 픽셀 색상이 필요합니까? 'this.getContentPane(). getBackground()'는 배경색 세트를 반환합니다. 이미지를 렌더링하는 경우'Graphics' 객체를 가져 와서 색상 정보를 가져와야합니다. 그것은 모두 당신이 무엇을하고 있는지에 달려 있습니다. – Gorbles
나는 8 픽셀 연결 채우기 알고리즘, 특정 픽셀의 색상을 정확히 잡을 수있는 방법을 구현하기 때문에 픽셀 색상을 얻으려고합니까? – user3323742