Frage

Ich brauche Hilfe darauf, die berührten Bereiche von Bitmap-Bild transparent (scheint wie Löschen), während ich auf diesem Bild meinen Finger bewege.

Ich habe eine PNG-Datei mit Alpha-Kanal in ihm. Ich möchte die berührt Pixel transparent drehen, damit kann der Benutzer das Gefühl, dass er es tatsächlich ist, gelöscht werden.

Dazu verwende ich Frame-Layout 2 Schichten zu laden. Down-Schicht ist für den Inhalt und die obere Schicht ist eine Bildansicht zum Löschen. Ich muß die obere Schicht, wenn der Benutzer berühren löschen und mit dem Finger auf sie bewegen.

Ich bin nicht immer, wie es transparent zu machen. Kann jemand mir bitte dabei helfen. Wenn möglich, bitte mich zu jedem Beispielcode lenken, wie ich zu dieser Bildverarbeitung sehr neu bin.

Vielen Dank im Voraus.

War es hilfreich?

Lösung

Sie müssen den PorterDuff-Modus auf einem Farbobjekt setzen:

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

und zieht mit Color.TRANSPARENT

Siehe auch diesen Thread in der Android-Entwickler-Gruppe: http: // Gruppen. google.com/group/android-developers/browse_thread/thread/5b0a498664b17aa0/de4aab6fb7e97e38?lnk=gst&q=erase+transparent#

Andere Tipps

Image hat eine setAlpha Methode, die eine ganze Zahl zwischen 0 und 255 nimmt, weiß ich nicht, welche transparent ist und das ist undurchsichtig, aber es sollte eine lange Zeit nicht nehmen, um zu versuchen: P

Es funktioniert, aber Zeichnen Pfad nicht.

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

    }


}


}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top