Cómo cambiar el color predeterminado de borrado en la aplicación de pintura en Android?
Hago una Aplicación en la que quiero borrar las líneas de dibujo con el evento. Para esto usé
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
Pero en el momento de borrar una línea, esa línea se vuelve negra primero borrada. Quiero un color transparente para borrar un dibujo de un camino.
- ¿Cómo rellenar un Android Path que contenga agujeros sin llenar los agujeros?
- CardView muestra artefactos cuando RotationY> 60
- Mapa de imagen de Android. - mostrar un archivo .svg y usarlo como un mapa de imágenes (zonas de toque)
- Android - Cómo dibujar un arco basado gradiente
- Dibujo sobre lienzo y guardar imagen
- ¿Una función sdk nativa para escalar Bitmap?
- ¿Por qué la muestra de documentación se divide por 2 para calcular inSampleSize para la carga de mapa de bits?
- Android: colorea debajo del gráfico de líneas
- Ideas para la física para rodar dados
- Android SurfaceFlinger
- ¿Cómo dibujo una curva a través de puntos de árbol en Android?
- ¿Es posible compartir una imagen en Android mediante una URL de datos?
- Android: Dibujo a lienzo, forma de hacer que la parte inferior izquierda corresponda a (0,0)?
He pasado por el FingerPaint.java
de APIDemos es decir, android-sdk\samples\android-17\ApiDemos
Y modificado
@Override protected void onDraw(Canvas canvas) { canvas.drawColor(0xFFAAAAAA); canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); canvas.drawPath(mPath, mPaint); }
a
@Override protected void onDraw(Canvas canvas) { canvas.drawColor(0xFFAAAAAA); canvas.drawBitmap(mBitmap, 0, 0, mBitmapPaint); mCanvas.drawPath(mPath, mPaint); // this line changed // mCanvas is Canvas variable which is // initialized in onSizeChanged() }
Ahora no está dibujando un color negro al borrar, todo funciona bien. No estoy seguro de que es la respuesta 100% correcta, pero funciona para mí.
Hey he usado una especie de truco para eliminar la línea negra.En mi botón de borrar, he configurado el color a blanco, en lugar de usar XferMode ..
if(erase){ paintColor = Color.parseColor(newColor); drawPaint.setColor(paintColor); }
El siguiente funciona para borrar sobre un fondo transparente …
Llame a SetErase (true) para iniciar el borrado.
El método OnDraw dibujará entonces una ruta blanca (en lugar de negra) que luego se borrará al color transparente y mantendrá toda la información de deshacer de la ruta.
Llamar a SetErase () para activar o desactivar el borrado
public void SetErase(bool On) { if (On) { if (!_erasing) { _delpaint = new Paint(_paint); _delpaint.Color = Color.White; _paint.SetXfermode(new PorterDuffXfermode(PorterDuff.Mode.Clear)); _erasing = true; } } else if (_erasing) { _erasing = false; _paint.SetXfermode(null); } } protected override void OnDraw(Canvas canvas) { canvas.DrawColor(BackgroundColor); canvas.DrawBitmap(CanvasBitmap, 0, 0, _bitmapPaint); if (_erasing) { canvas.DrawPath(_path, _delpaint); // draw white path } else { canvas.DrawPath(_path, _paint); } }