Android Paint PorterDuff.Mode.CLEAR在我的视图上绘制黑色

时间:2013-03-21 11:31:54

标签: android image paint

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

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

但是当你再次开始绘画后擦拭它没有正确涂漆所以任何擦除油漆的想法请建议。

3 个答案:

答案 0 :(得分:3)

请尝试以下代码。

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

另请查看文件夹图形下的api演示中的示例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

答案 1 :(得分:0)

我有同样的问题。

需要设置视图的 setLayerType

yourView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

您可以在构造函数中或通过视图对象进行设置。

完成了。

答案 2 :(得分:-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();
}