Apagar imagem desenhada em Objeto da cl. CANVAS

4 respostas
M

Pessoal,

estou concluindo um trabalho escolar composto por um programa de desenhos(estilo o PAINT) e só falta a função de apagar. Neste caso gostaria de apagar a tela toda, porém não consegui encontrar o metodo ou função da classe canvas para isso.

Abaixo segue o que já implementei.

--Inicialmente eu preecho um vetor da classe VECTOR com coordenadas de pontos.
-
- Depois, dentro da classe CANVAS, implemento um método PAINT que possui um loop com FOR que
*- Varre o vetor da Classe vetor e recolhe as coordenadas guardadas.
*- Desenha no CANVAS através das funções DrawRect, DrawOval e DrawLine.

Gostaria de limpar este vetor que guarda as coordenadas e limpar também a tela de modo que possa recomeçar a desenhar normalmente e o vetor comece a ser preenchido a partir da primeira posição outra vez.

Mais uma vez obrigado.

Mcnrocha
[email removido]
[email removido]

4 Respostas

C

Olá MNRocha,
Usa o método da classe Graphics:

clearRect(int x,int y,int width,int height)

Até mais!!

M

Aproveitando o topico!

Eu tambem estava com a mesma duvida e fiz como o clv falou mas não funcionou o Canvas continua com os desenhos. O que pode estar errado?

Este é o codigo:

public class MyCanvas extends Canvas {

	/**
	 * 
	 */
	private BufferedImage image = null;
	
	public MyCanvas() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param arg0
	 */
	public MyCanvas(GraphicsConfiguration arg0) {
		super(arg0);
		// TODO Auto-generated constructor stub
	}
	
	public void setImage(BufferedImage img) {
		image = img;
	}
	
	public void paint(Graphics g) {	
		if(image != null) {
			g.drawImage(image, 0, 0, this);
		}		 
	}
	
/*	private void paintCentered(Graphics g) {
		Dimension dmCanvas = this.getSize();
		int x = dmCanvas.width / 2 - image.getWidth() / 2;
		int y = dmCanvas.height / 2 - image.getHeight() / 2;
		x = x < 0 ? 0 : x;
		y = y < 0 ? 0 : y;
		g.drawImage(image, x, y, this);
	}*/
	
/*	private void paintNormal(Graphics g) {
		g.drawImage(image, 0, 0, this);
	}*/
	
	public void paintImage(Graphics g, BufferedImage img) {
		setImage(img);
		paint(g);
	}
	
	public void clear() {
		Graphics2D g = image.createGraphics();
		g.setBackground(Color.WHITE);
		g.clearRect(0, 0, image.getWidth(), image.getHeight());		
		paint(g);
	}
}
M

amigo,

Utilize o metodo removeAllElements() da classe java.util.vector para remover todos os elementos do vetor e chame novamente o seu metodo paint()

F

tenta comecar o teu metodo paint assim

public void paint(Graphics g) {
        super.paint(g);
        ....  
    }
Criado 30 de junho de 2004
Ultima resposta 8 de abr. de 2005
Respostas 4
Participantes 5