Editor de imagem com Graphics2D

3 respostas
M

Fala galera,
Estou mechendo com desenho de polígonos usando o Graphics2D,
para desenho de retangulos, triangulos, efeitos de transparencia, gradiente, semelhante ao Adobe Fireworks
estou usando como área de desenho um Jlabel, e redesenhando a área pelo método paint()

existe alguma forma de otimizar o desenho usando aceleração de hardware?
programas como Fireworks ou Gimp utilizam aceleração de hardware?

3 Respostas

Marky.Vasconcelos

Voce pdoe desenhar em uma BufferedImage e mandar seu JPanel (não pelo JLabel) redesenhar o BufferedImage, é possivel pegar o Graphics2D do BufferedImage e mandar desenhar ele no Graphics passado pelo paintComponent (não paint) do JPanel.

BufferedImage é rapido por que estará pré-renderizado e é acelerado por hardware.

Veja mais sobre Java 2D no Ponto V!

M

Estou seguindo este tutorial - [url]http://www.guj.com.br/articles/138[/url] - para desenhar polígonos no BufferedImage.
mas então a sua idéia seria escrever a imagem no BufferedImage primeiro, para depois escrever no JPanel?
percebo também que neste tutorial o autor usa a classe ImageIcon para escrever o buffer em um JLabel:

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;

public class ExemploImagem {
	public static void main(String[] args) {
		JFrame frm = new JFrame("Teste Imagem");
		JPanel pan = new JPanel();
		JLabel lbl = new JLabel( criarImagem() );
		pan.add( lbl );
		frm.getContentPane().add( pan );
		frm.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		frm.pack();
		frm.show();
	}
	
	private static ImageIcon criarImagem() {
		int width=200, height=200;
		BufferedImage buffer = new BufferedImage( width, height, BufferedImage.TYPE_INT_RGB );
		Graphics g = buffer.createGraphics();
		g.setColor( Color.WHITE );
		g.fillRect( 0, 0, width, height );
		g.setColor( Color.BLACK );
		g.drawLine( 0, 0, width, height );
		return new ImageIcon( buffer );
	}
}
[img]http://www.motorway.com.br/imagens/img1.gif[/img]
M

Consegui, segui as dicas do tópico http://www.guj.com.br/java/219068-desenhar-em-um-bufferedimage-em-tempo-de-execucao
agora eu desenho os pixels no buffer e então ele redesenha a imagem muito mais rápido com o BufferedImage…
Valeu Marky!

Criado 20 de janeiro de 2011
Ultima resposta 21 de jan. de 2011
Respostas 3
Participantes 2