Como mudar a cor de um pixel no jframe, urgente! [RESOLVIDO]
6 respostas
W
wellingtonfoz
Olá galera,
Estou fazendo a leitura de um txt que contém o valor numérico da intensidade de um pixel (de 0 a 255) e preciso setar cada ‘cor’ em cada pixel de um jframe 1024x768. Tem algum jeito de setar a cor somente de um pixel no jframe?
Eu tentei criar um label com a cor e setar os bounds do label na janela mas deu estouro de memória por ser 1024x768 labels, rsrs.
Alguém pode me ajudar??!! Valew!
=========================
RESOLVI USANDO A CLASSE BUFFEREDIMAGE E SETANDO PIXEL A PIXEL.
publicvoidpaintComponent(Graphicsg){FileReaderreader=null;try{reader=newFileReader("Digitalizacao/NCC-1701-Dgray.txt");}catch(FileNotFoundExceptione){JOptionPane.showMessageDialog(this,"Arquivo não encontrado!");}Scannerread=newScanner(reader);intlinhas=read.nextInt();intcolunas=read.nextInt();for(inti=0;i<linhas;i++){for(intj=0;j<colunas;j++){Colorcor=newColor(read.nextInt(),0,0);g.setColor(cor);g.drawOval(i,j,1,1);}}}
R
roger_rf
Faltou incluir a seguinte chamada no começo do método:
super.paintComponent(g);
A propósito, aconselho ler o valor do pixel antecipadamente numa rotina em separado. Do modo como está seu método, o arquivo vai ser lido TODA VEZ que seu formulário for repintado, o desempenho será prejudicado. Por fim, você abre o Reader mas não o fecha, o que causa “vazamento” de recursos.
W
wellingtonfoz
roger_rf:
Faltou incluir a seguinte chamada no começo do método:
super.paintComponent(g);
A propósito, aconselho ler o valor do pixel antecipadamente numa rotina em separado. Do modo como está seu método, o arquivo vai ser lido TODA VEZ que seu formulário for repintado, o desempenho será prejudicado. Por fim, você abre o Reader mas não o fecha, o que causa “vazamento” de recursos.
Mas como separo em uma rotina separada e chamo só na primeira vez pra pintar a tela?
Se eu colocar separado e chamar no paintComponent, não vai chamar toda vez que repintar do mesmo jeito???
Outra coisa, eu to usando ali new Color(R,G,B), mas o que leio é valor de intensidade entre preto e branco e, como não sei, to usando o Red só pra pintar. Sabe me dizer qual é o de intensidade??
R
roger_rf
Leia o valor do pixel apenas uma vez, e armazene-o para uso posterior da rotina paintComponent(). Alguns momentos adequados para ler o valor: no momento em que o JFrame for construído, ou quando o usuário clicar um determinado botão.
Os valores RGB da cor preta são [0,0,0], e os valores RGB da cor branca são [255,255,255]. Para obter os tons de cinza entre preto e branco, basta informar valores RGB idênticos (por exemplo, [128,128,128]).
W
wellingtonfoz
roger_rf:
Leia o valor do pixel apenas uma vez, e armazene-o para uso posterior da rotina paintComponent(). Alguns momentos adequados para ler o valor: no momento em que o JFrame for construído, ou quando o usuário clicar um determinado botão.
Os valores RGB da cor preta são [0,0,0], e os valores RGB da cor branca são [255,255,255]. Para obter os tons de cinza entre preto e branco, basta informar valores RGB idênticos (por exemplo, [128,128,128]).