我需要为具有画布的绘画应用程序实现橡皮擦:
Canvas canvas = new Canvas(bitmap);
其中位图是一个可变位图。我用以下油漆在画布上写字:
mPaint = new Paint();
mPaint.setAntiAlias(true);
mPaint.setDither(true);
mPaint.setColor(0xFF000000);
mPaint.setStyle(Paint.Style.STROKE);
mPaint.setStrokeJoin(Paint.Join.ROUND);
mPaint.setStrokeCap(Paint.Cap.ROUND);
mPaint.setStrokeWidth(50);
然后,当我想擦除时,我执行以下操作:
mPaint.setMaskFilter(null);
mPaint.setColor(Color.TRANSPARENT);
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
但它不起作用。如何在不使用 porterDuff 模式的情况下实现擦除,或者如何更改代码以使其正常工作。
就像它所做的那样,它画线,就像笔一样。但颜色不是黑色,而是灰色。
编辑:我尝试了其他方法,并将位图值保存在另一个位图中,这样当我按下擦除时,我会取回该值。这有效并删除了图纸,但问题是,在此之后,如果我想画一些东西,我画了但它消失了。这是因为位图与来自以下位置的位图不同:
Canvas canvas = new Canvas(bitmap);
?