首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android Paint PorterDuff.Mode.CLEAR在我的视图上绘制黑色

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

Stack Overflow用户
提问于 2013-03-21 19:31:54
回答 3查看 9.3K关注 1票数 2

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

代码语言:javascript
复制
 paint.setColor(0x00000000);
 paint.setAlpha(0x00);

但是擦除之后,当你再次开始绘画时,它不能正确地绘画,所以任何擦除绘画的想法,请建议。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-21 19:37:51

尝试下面的代码。

代码语言:javascript
复制
      paint.setAlpha(0xFF);//transperent color
      paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));//clear the draw

还可以查看FingerPaint.java文件夹下的演示中的示例图形。

代码语言:javascript
复制
 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

票数 3
EN

Stack Overflow用户

发布于 2017-10-14 21:30:50

我也有同样的问题。

需要设置视图的setLayerType

代码语言:javascript
复制
yourView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

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

完成了。

票数 4
EN

Stack Overflow用户

发布于 2013-09-12 03:28:15

这应该可以解决这个问题

代码语言:javascript
复制
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()中,将其更改为:

代码语言:javascript
复制
private void touch_up() {

     mPath.reset();
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15546342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档