Eu quero criar outro BufferedImage mas que seja uma imagem completamente cinza. Como posso fazer?
Para ser mais precisa eu quero criar uma imagem que tenha um tamanho que não é padrão, ou seja, o tamanho vai depender do mapWidth e do mapHeight do primeiro BufferedImage. Mas essa imagem é apenas formada da cor cinza.
Obrigada
Muito legal essa página Vini, mas eu creio q eu precise de alguma coisa muito mais simples. Quero criar um BufferedIamge de tamanho x,y (altura, largura) preenchido com a cor cinza.
ViniGodoy
Você pode usar o TYPE_BYTE_GRAY ou o TYPE_USHORT_GRAY.
O segundo tem mais tons de cinza que o primeiro.
É isso mesmo. Mas essa imagem, criada com o tipo de GRAY nunca poderá ter cor. Se você quiser que tenha cor, crie com o mesmo tipo da anterior e use o mesmo método de desenho que vc já usou.
oitathi
Desculpa Vini, mas eu não entendi o que vc disse…
eu teria que fazer assim então:
O tipo da imagem, que define quantos bytes ela gastará para representar cores, quais cores serão representadas e de que forma (indexada ou direta);
A imagem em si.
Você pode ter uma imagem que suporte o desenho colorido, mas que casualmente só foi desenhado com cinza (ou seja, uma imagem do tipo INT_RGB ou INT_ARGB, pintada inteiramente de cinza).
E você pode ter uma imagem que só tenha tons de cinza, e jamais vá aceitar qualquer tipo de cor (do tipo GRAY). Nesse caso, se você pintar cores na imagem, elas serão convertidas para um tom de cinza.
A questão é, o que você precisa?
oitathi
"E você pode ter uma imagem que só tenha tons de cinza, e jamais vá aceitar qualquer tipo de cor (do tipo GRAY). Nesse caso, se você pintar cores na imagem, elas serão convertidas para um tom de cinza. " Eu preciso disso. Então, para que isso aconteça, eu devo excluir a linha onde eu seto uma cor, ou seja, não definir cor alguma, é isso?
gr.setColor(Color.GRAY); // eu devo excluir essa linha do meu código? Ou devo colocar um outro valor aqui?gr.fillRect(0,0,mapWidth+400,mapHeight+400);
ViniGodoy
Não, vc ainda precisa do setColor. Ele dirá qual é o tom de cinza a ser usado.
No caso de criar uma imagem com TYPE_USHORT_GRAY, você pode usar qualquer cor (GRAY, RED, YELLOW) que sairá cinza. Só o que muda é o tom. Aí é só achar o tom que você precisa.
oitathi
ah tah valeu Vini!!! Entendi… agora soh preciso saber como faço pra colocar tudo isso dentro de um JLabel…
ViniGodoy
Você pode colocar no JImagePanel (que aceita um BufferedImage direto).
Ou usar o setIcon do JLabel. Um dos construtores da classe ImageIcon aceita um Image. E todo BufferedImage é um Image.