如何在android中使用手指橡皮擦?

时间:2012-03-16 07:40:11

标签: android android-view

我准备了一个油漆应用程序。在我的应用程序中,我们可以绘制任何东西。它工作正常。在这里我想准备擦除油漆擦除。橡皮擦正在工作,但它是橡皮擦所有绘制的油漆。我想要橡皮擦只有我触摸的地方,如果绘制的油漆是我写的那些代码,

这是我的提款方法,

public void onDraw(Canvas canvas) {

    if (myDrawBitmap == null) {
        myDrawBitmap = Bitmap.createBitmap(480, 800,
                Bitmap.Config.ARGB_8888);
        mBmpDrawCanvas = new Canvas(myDrawBitmap);
        mIntDrawArray = new int[myDrawBitmap.getWidth()
                * myDrawBitmap.getHeight()];
    }
    if (mBmpDrawCanvas != null) {
        myDrawBitmap.getPixels(mIntDrawArray, 0, myDrawBitmap.getWidth(),
                0, 0, myDrawBitmap.getWidth(), myDrawBitmap.getHeight());
        for (Path path : ILearnPaintActivity.mArryLstPath) {
            if (ILearnPaintActivity.mArryLstPath.contains(path)
                    && ILearnPaintActivity.paintAndEraserFlag == 1) {
                mPaint.setXfermode(new PorterDuffXfermode(
                        PorterDuff.Mode.CLEAR));
                mBmpDrawCanvas.drawPath(ILearnPaintActivity.mPath, mPaint);
            } else {
                mBmpDrawCanvas.drawPath(ILearnPaintActivity.mPath, mPaint);
            }

        }
        if (myDrawBitmap != null)
            canvas.drawBitmap(myDrawBitmap, 0, 0, null);

    }

}

绘制油漆工作正常。在同一活动中,我有一个按钮“橡皮擦”。当我们点击橡皮擦按钮时,我会为差异分配标志。请帮我解决这个问题......

2 个答案:

答案 0 :(得分:0)

首先,你需要弄清楚什么擦除。

对于矢量基础画布,它是删除矢量元素。 对于像素基础画布,它的意思是使用backgournd颜色绘制。 (或使其透明)

所以在我看来。擦除时您可以使用backgournd颜色更改Paint。并继续通过触摸在位图上绘制一条非常粗的线。

答案 1 :(得分:0)

试试这个

                mBitmap.eraseColor(Color.TRANSPARENT);  // Bitmap erase color
                mPath.reset();       // your path
                mView.invalidate(); // your View Path