studio - manual de programacion android pdf
¿Cómo borrar el dibujo anterior sobre lienzo? (7)
Tengo una imagen de fondo (un mapa) en la que necesito dibujar con regularidad el icono de que estás aquí. Uso lienzo para dibujar el icono en la parte superior del mapa. Suponiendo que el proceso de dibujo se active al hacer clic en el botón (ver código a continuación), ¿cómo puedo borrar el dibujo anterior?
private void displayUserPos(Point userPos) {
Bitmap marker = BitmapFactory.decodeResource(getResources(), R.drawable.ic_yah);
canvas.drawBitmap(marker, (float)userPos.getX(), (float)userPos.getY(), null);
imgView.setImageBitmap(fmOverlay);
}
Escribí una función para ayudar con esto. Por lo general, configuro un valor booleano para verificar si la página ha cambiado, si lo ha hecho, llamo a esta función, usando el valor devuelto para establecer mi nuevo valor lógico.
private boolean clearCanvas(Canvas canvas){
canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR);
return false;
}
Color. TRANSPARENT no es realmente necesario en esto, podrías hacerlo sin.
Inténtalo de la siguiente manera, se puede utilizar para limpiar el lienzo totalmente
La declaración debería ser así,
ArrayList<Pair<Path, Paint>> paths = new ArrayList<Pair<Path, Paint>>();
ArrayList<Pair<Path, Paint>> undonePaths = new ArrayList<Pair<Path, Paint>>();
y mientras se borra el uso
undonePaths.clear();
paths.clear();
invalidate();
Solo tienes que rellenar el lienzo con un color o imagen:
canvas.drawColor(Color.BLACK);
Si desea mantener ciertos elementos y quitar ciertos elementos, puede almacenarlos en un ArrayList. Luego puede agregar y eliminar elementos de este ArrayList cuando lo desee, y luego iterarlos en onDraw ().
for (Iterator<GraphicObject> it = _graphics.iterator(); it.hasNext();) {
GraphicObject graphic = (GraphicObject)it.next();
coords = graphic.getCoordinates();
canvas.drawCircle(coords.getX(), coords.getY(), (float)coords.getRadius(), paint);
}
canvas.drawColor(0, Mode.CLEAR);
canvas.drawColor(0, Mode.CLEAR);
Más información http://developer.android.com/guide/topics/graphics/index.html
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
Para más información haz click aquí.
overlayBitmap.eraseColor(Color.TRANSPARENT);
Esto simplemente establece un mapa de bits existente a todo transparente.
Lo uso para "borrar" un objeto de mapa de bits que uso para superponer sobre otro para mostrar una ventana de recorte.