如何擦图像?

时间:2013-01-24 11:14:51

标签: java android android-intent

我想擦Image.Actually我有两个图像一个在前景,另一个在背景中当我摩擦forground图像然后背景图像将要来怎么做?我在这里找到了很多,但还没有得到解决方案。所以有人请帮我解决这个问题。 我试过这个:

public class MainActivity extends Activity {

ImageView img;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // setContentView(R.layout.activity_main);
    // img = (ImageView) findViewById(R.id.img);
    //
    // new Panel(this);
    setContentView(new Panel(this));

}

class Panel extends View {

    private Bitmap mBitmap;
    private Canvas mCanvas;
    private Path mPath;
    private Paint mPaint;
    Bitmap bitmap;
    Canvas pcanvas;
    int x = 0;
    int y = 0;
    int r = 0;

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

        Log.v("Panel", ">>>>>>");

        setFocusable(true);
        setBackgroundColor(Color.MAGENTA);

        // setting paint
        mPaint = new Paint();
        mPaint.setAlpha(1);
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
        mPaint.setAntiAlias(true);

        // getting image from resources
        Resources r = this.getContext().getResources();

        Bitmap bm = BitmapFactory.decodeResource(getResources(),
                R.drawable.verse);

        // converting image bitmap into mutable bitmap

        // bitmap = Bitmap.createBitmap(295, 260, Config.ARGB_8888);
        bitmap = Bitmap.createBitmap(185, 120, Config.ARGB_8888);
        pcanvas = new Canvas();
        pcanvas.setBitmap(bitmap); // drawXY will result on that Bitmap
        pcanvas.drawBitmap(bm, 0, 0, null);

    }

    @Override
    protected void onDraw(Canvas canvas) {

        // draw a circle that is erasing bitmap
        // pcanvas.drawCircle(x, y, r, mPaint);
        pcanvas.drawColor(color.transparent);
        canvas.drawBitmap(bitmap, 0, 0, null);

        super.onDraw(canvas);

    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {

        // set paramete to draw circle on touch event
        x = (int) event.getX();
        y = (int) event.getY();

        r = 20;
        // Atlast invalidate canvas
        invalidate();
        return true;
    }

}
}

1 个答案:

答案 0 :(得分:0)

您可能想尝试使用Xfermodes / Porterduff,可能此线程可能会对您有所帮助:Android bitmap mask color, remove color

要设置您可以使用的颜色

int[] pix=new int[bitmap.getWidth()*bitmap.getHeight()];
bitmap.getPixels(pix, 0, 0, bitmap.getWidth(), bitmap.getHeight);

// do some processing here
// possible set color of some pixels to Color.TRANSPARENT

bitmap.setPixels(pix, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight());