Question

J'ai besoin de l'aide sur les zones touchées de l'image bitmap transparente (comme semble l'effacement) pendant que je me déplace le doigt sur cette image.

J'ai un fichier PNG avec canal alpha en elle. Je veux tourner les pixels Touché transparent de sorte que, l'utilisateur peut se sentir qu'il est en train d'effacer réellement.

Pour cela, je me sers de la mise en page cadre pour charger 2 couches. Bas couche est contenu et la couche supérieure est un Imageview pour effacement. J'ai besoin effacer la couche supérieure lorsque l'utilisateur tactile et déplacer son doigt dessus.

Je ne reçois pas comment le rendre transparent. Quelqu'un peut-il s'il vous plaît aidez-moi dans ce domaine. Si possible s'il vous plaît me diriger à un exemple de code, comme je suis très nouveau à ce traitement d'images.

Merci d'avance.

Était-ce utile?

La solution

Vous devez définir le mode PORTERDUFF sur un objet de la peinture:

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

et dessiner avec Color.TRANSPARENT

Voir aussi ce fil dans le groupe de développeurs Android: http: // groupes. google.com/group/android-developers/browse_thread/thread/5b0a498664b17aa0/de4aab6fb7e97e38?lnk=gst&q=erase+transparent#

Autres conseils

ImageView a une méthode setAlpha qui prend un nombre entier compris entre 0 et 255. Je ne sais pas qui est transparent et qui est opaque, mais il ne devrait pas prendre beaucoup de temps à essayer: P

Il fonctionne, mais n'a pas tiré le chemin.

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

    }


}


}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top