Apagar imagem desenhada em Objeto da cl. CANVAS

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
mcnrocha@yahoo.com.br
marcone@etnainformatica.com.br

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

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

Até mais!!

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:

[code]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);
}

}
[/code]

amigo,

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

tenta comecar o teu metodo paint assim

    public void paint(Graphics g) {
        super.paint(g);
        ....  
    }