Problema com cor de fundo na geração de uma imagem

1 resposta
L

Olá pessoal! Gostaria de uma ajuda.
Eu gero figuras dinamicamente através de um array de dados, que é coletado por sistemas remotos.
Estou tendo dificuldades com a cor de fundo da figura. Ela é sempre preta! Eu já setei várias cores, mas a figura que é gerada sempre vem com preto no fundo. Deve ser algo ridículo, mas já atingi aquele ponto em que você fica cego, não consegue ver o problema. Então posto aqui para ver se alguém me ajuda!
segue o código:

private ImageIcon geraImagem (short[] dados) {
    	int largura=480, altura=1024, meioDeEscala = altura/2;
    	int incrementoX = 240, incrementoY = 102;
    	BufferedImage buffer = new BufferedImage( largura, altura, BufferedImage.TYPE_INT_RGB);
    	Graphics g = buffer.createGraphics();
    	// gerar o quadriculado obedecendo as escalas
    	// 1024 em Y e 1920 em X
    	g.setPaintMode();
    	g.setColor(Color.WHITE);
    	g.clearRect(0, 0, largura, altura);
    	g.setColor(Color.LIGHT_GRAY);
    	int X=0;
    	while(X<largura) {
    		g.drawLine(X, 0, X, altura);
    		X += incrementoX;
    	}
    	int Y=0;
    	while(Y><altura) {
    		g.drawLine(0, Y, largura, Y);
    		Y += incrementoY;
    	}
    	// desenhar traçado
		g.setColor(Color.WHITE);		
		int i=0;
		while((i><largura) ){
			g.drawLine(i, meioDeEscala - dados[i+offsetAmostra], (i+1), meioDeEscala - dados[i+1+offsetAmostra]); 
			i++;
		}
		try {
			ImageIO.write(buffer, "PNG", new File("buffer.png"));
		} catch (IOException e) {
			e.printStackTrace();
		}
    	return new ImageIcon( buffer );
    }

Estou pintando o traçado de branco para poder vê-lo (linha 23). O correto seria pintá-lo de preto, sobre um fundo branco .
Caso eu sete a cor do traçado para vermelho, ele gera linhas vermelhas corretamente. Só a cor de fundo que fica sempre preta…

Envio o resultado para vocês terem uma idéia do que falo.

Agradeço a ajuda!!>


1 Resposta

L

Descobri! Que orelhada minha…

ao invés de usar
g.clearRect(0, 0, largura, altura);

Tenho que usar
g.fillRect(0, 0, largura, altura);

Porque é uma imagem “offscreen”.

Criado 28 de abril de 2008
Ultima resposta 28 de abr. de 2008
Respostas 1
Participantes 1