Pegar cor de um pixel dada cordenada x,y JFRAME

1 resposta
E

Oi galerinha, meu primeiro topico aqui, estou no ultimo ano de ciência da computação na puc-sp e preciso da ajuda de vocês.
Eu tenho um programa que desenha Poligonos em um JFrame, basicamente ele armazena os pontos em um array de pontos e traça retas entre eles e com o botao direito eu fecho o poligono. Meu professor pediu que depois disto eu fizesse um click em um pixel qualquer da tela e que os demais sejam preenchidos até chegar na borda( que tem uma cor diferente do fundo). Meu problema é apenas pegar a cor do pixel em que cliquei. Se quiserem eu posto o codigo, a ideia é simples, ve se o pixel é da cor da borda, se nao for eu pego os do lado( eu acho q é issu) gostaria muito da ajuda de vcs, se precisarem eu posto o código tambem.

[ ]'s
Luis Fernando

1 Resposta

E

Galerinha consegui resolver, vo postar aqui o codigo. A ideia eh essa, vc faz um poligono ( armazena os pontos em uma pilha e traça reta entre eles ), depois de fexar vc clica em um ponto e o programa tem que preencher o poligono com uma cor, resolvi usando ROBOT, vo deixar a funçãozinha aqui, abraço:

void pintaTudu(int x,int y, Color corBorda, Color corPreencher,Graphics g){
             Robot robot = null;
                try {
                    robot = new Robot();
                } catch (AWTException e) {
                    System.out.println("Erro ao criar o Robô");
                }
             
            Ponto pixel = new Ponto(x,y);

            int corPixel = robot.getPixelColor((int)pixel.getX(), (int)pixel.getY()).getRGB();

            if(corPixel != corBorda.getRGB() && corPixel != corPreencher.getRGB()){
                new Ponto2D((int)pixel.getX(),(int)pixel.getY(),Color.RED).desenharPonto(g); // apenas desenha o ponto(pixel) da cor vermelha
                pintaTudu(x+1, y, corBorda, corPreencher,g);
                pintaTudu(x-1, y, corBorda, corPreencher,g);
                pintaTudu(x, y+1, corBorda, corPreencher,g);
                pintaTudu(x, y-1, corBorda, corPreencher,g);
            }
    }
Criado 22 de outubro de 2010
Ultima resposta 22 de out. de 2010
Respostas 1
Participantes 1