Domanda

Ho bisogno di aiuto per rendere le aree toccate un'immagine bitmap trasparente di (sembra cancellazione), mentre mi sto muovendo il dito su quella immagine.

Ho un file PNG con canale alfa in esso. Voglio trasformare i pixel toccati a trasparente in modo che l'utente può sentire che egli è in realtà cancellandola.

Per questo sto usando layout del frame per caricare 2 strati. Giù strato è per i contenuti e lo strato superiore è un ImageView per la cancellazione. Ho bisogno cancellare il livello superiore quando tocco dell'utente e muovo il dito su di esso.

Non ricevo come renderlo trasparente. Qualcuno può per favore mi aiuti in questo. Se possibile, mi ha diretto a qualsiasi codice di esempio, come io sono molto nuovo a questa elaborazione delle immagini.

Grazie in anticipo.

È stato utile?

Soluzione

È necessario impostare la modalità di PorterDuff su un oggetto di pittura:

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

e disegnare con Color.TRANSPARENT

vedi anche questa discussione nel gruppo degli sviluppatori Android: http: // gruppi. google.com/group/android-developers/browse_thread/thread/5b0a498664b17aa0/de4aab6fb7e97e38?lnk=gst&q=erase+transparent#

Altri suggerimenti

ImageView ha un metodo setAlpha che prende un numero intero compreso tra 0 e 255. non so che è trasparente e che è opaco ma non dovrebbe richiedere molto tempo per provare: P

Funziona, ma non ha tratto percorso.

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);

    }


}


}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top