Pregunta

Necesito ayuda en hacer que las áreas tocadas imagen de mapa de bits transparente de (que parece ser borrado) mientras yo estoy moviendo mi dedo en esa imagen.

Estoy teniendo un archivo PNG con canal alfa en ella. Quiero convertir los píxeles tocado a transparente de manera que el usuario puede sentir que está realmente borrarla.

Para esto yo estoy usando diseño de marcos para cargar 2 capas. Abajo capa es para el contenido y la capa superior es un Imageview para borrado. Que necesito borrar la capa superior cuando el usuario tocar y mover el dedo sobre ella.

No estoy recibiendo cómo hacer que sea transparente. Puede alguien por favor me ayude en esto. Si es posible decirme cómo llegar a cualquier código de ejemplo, ya que soy muy nuevo en esto de procesamiento de imágenes.

Gracias de antemano.

¿Fue útil?

Solución

Es necesario configurar el modo PorterDuff en un objeto de pintura:

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC)) 

y dibujar con Color.TRANSPARENT

También ver este tema en el grupo de desarrolladores de Android: http: // grupos. google.com/group/android-developers/browse_thread/thread/5b0a498664b17aa0/de4aab6fb7e97e38?lnk=gst&q=erase+transparent#

Otros consejos

ImageView tiene un método setAlpha que toma un número entero entre 0 y 255. No sé que es transparente y que es opaco pero no debe tomar mucho tiempo para tratar: P

Funciona, pero no sacó Path.

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BlurMaskFilter.Blur;
import android.graphics.BitmapFactory;
import android.graphics.BlurMaskFilter;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class StartActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(new TouchView(this));


}

class TouchView extends View{
    Bitmap bgr;
    Bitmap overlayDefault;
    Bitmap overlay;
    Paint pTouch;
    int X = -100;
    int Y = -100;
    Canvas c2;

    public TouchView(Context context) {
        super(context);

        bgr = BitmapFactory.decodeResource(getResources(),R.drawable.bgr);
        overlayDefault = BitmapFactory.decodeResource(getResources(),R.drawable.over);
        overlay = BitmapFactory.decodeResource(getResources(),R.drawable.over).copy(Config.ARGB_8888, true);  
        c2 = new Canvas(overlay);

        pTouch = new Paint(Paint.ANTI_ALIAS_FLAG);         
        pTouch.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT)); 
        pTouch.setColor(Color.TRANSPARENT);
        pTouch.setMaskFilter(new BlurMaskFilter(15, Blur.NORMAL));


    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {

        switch (ev.getAction()) {

            case MotionEvent.ACTION_DOWN: {

                X = (int) ev.getX();
                Y = (int) ev.getY();
                invalidate();

                break;
            }

            case MotionEvent.ACTION_MOVE: {

                    X = (int) ev.getX();
                    Y = (int) ev.getY();
                    invalidate();
                    break;

            }           

            case MotionEvent.ACTION_UP:

                break;

        }
        return true;
    }


    @Override
    public void onDraw(Canvas canvas){
        super.onDraw(canvas);

        //draw background
        canvas.drawBitmap(bgr, 0, 0, null);
        //copy the default overlay into temporary overlay and punch a hole in it                          
        c2.drawBitmap(overlayDefault, 0, 0, null); //exclude this line to show all as you draw
        c2.drawCircle(X, Y, 80, pTouch);
        //draw the overlay over the background  
        canvas.drawBitmap(overlay, 0, 0, null);

    }


}


}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top