BufferedImage está sendo reproduzida com a cor do Graphics

4 respostas Resolvido
java
R

Como eu posso adicionar uma BufferedImage por cima de outra? E de forma que a última imagem que eu adicionei sempre fique por cima da outra. Respostas que modificar métodos da extensão do JFrame não funcionam no meu caso, preciso de um método que, não obrigatoriamente, mas de preferência, retorne uma BufferedImage para eu renderizar no BufferedGraphics.

4 Respostas

TerraSkilll

Não tenho certeza do que você quer exatamente, mas é perfeitamente possível desenhar um BufferedImage sobre outro. Nada disso requer componentes visuais (JFrames, JPanels).

Veja se esse exemplo é similar ao que você procura: https://codereview.stackexchange.com/questions/58067/drawing-a-bufferedimage-into-another . O primeiro BufferedImage está sendo alterado, mas você pode ajustar esse método pra te retornar um novo BufferedImage.

Abraço.

R

Foi deste jeito que eu fiz, tentei desenhar uma BufferedImage por cima da outra através do gráfico dela. Mas não deu certo. Veja aqui o código do meu método:

lastImage.createGraphics();
lastImage.getGraphics().drawImage(sprite.image, x, y, null);
lastImage.getGraphics().dispose();
screen.getBufferStrategy().getDrawGraphics().drawImage(lastImage, lastImageX, lastImageY, null);

O atributo lastImage ele é definido quando o método é executado pela primeira vez.
Bom, quando eu executo este código, ele imprime a primeira imagem, e não a segunda, eu testei até colocar elas em coordenadas em que elas não colidissem e mesmo assim a segunda imagem não aparece.

R

Depois de um tempo, descobri que a imagem estava pegando a cor do graphics.setColor(Color.WHITE), por isto achei que estava invisível. As imagens que são desenhadas na lastImage ficam deste jeito, sendo que a primeira BufferedImage fica normal.

R
Solucao aceita

Tentei criar uma nova BufferedImage e desenhas as outras BufferedImages nesta, e reproduzir a nova, e funcionou.

Criado 7 de novembro de 2019
Ultima resposta 8 de nov. de 2019
Respostas 4
Participantes 2