2

我想为我的绘画应用程序实现橡皮擦。我可以使用以下代码擦除

 paint.setColor(0x00000000);
 paint.setAlpha(0x00);

但是当你再次开始绘画时擦除后它不能正确绘画所以请提出任何擦除油漆的想法。

4

3 回答 3

4

我有同样的问题。

需要设置视图的setLayerType

yourView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

您可以在构造函数或视图对象中设置它。

完成。

于 2017-10-14T13:30:49.947 回答
3

试试下面的代码。

      paint.setAlpha(0xFF);//transperent color
      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));//clear the draw

还可以查看文件夹 graphics 下 api demos 中的示例 FingerPaint.java。

 setAlpha(int a)

setColor() 的助手,它只分配颜色的 alpha 值,保持其 r、g、b 值不变。

http://developer.android.com/reference/android/graphics/Paint.html。看看文档。

编辑:

还要检查这个

https://code.google.com/p/android/issues/detail?id=54105#c1

于 2013-03-21T11:37:50.790 回答
-1

这应该可以解决这个问题

private void touch_move(float x, float y){
    float dx = Math.abs(x - mX);
    float dy = Math.abs(y - mY);
    if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
        mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);

        mPath.lineTo(mX, mY);
        mCanvas.drawPath(mPath, mPaint);
        mPath.reset();
        mPath.moveTo(mX, mY);

        mX = x;
        mY = y;
    }
}

在 touch_up() 中将其更改为:

private void touch_up() {

     mPath.reset();
}
于 2013-09-11T19:28:14.887 回答