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.

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); } } 
  • Android drawBitmap 5x diferencia de rendimiento
  • Cambiar el fondo del botón alfa sin cambiar el valor del alfabeto del texto en Android?
  • ¿Cómo configurar la opacidad de la forma?
  • ¿Diferencia entre "tamaño de pantalla" y "densidad de pantalla" en Android?
  • Cómo cambiar el tamaño de Bitmaps de la manera óptima en Android?
  • Cómo modificar la muestra bitmapmesh para incluir efecto ojo de pez?
  • Android Graphics Internals
  • View.onDraw () - ¿cuándo se llama?
  • Estoy utilizando animaciones de Android para girar un ImageView, pero el movimiento es muy agitado
  • Cómo dibujar con framebuffer en Android?
  • Android 2D-juego, la mejor opción para los gráficos?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.