带有porterduff.mode.clear的橡皮擦在画布中不起作用



我需要为具有画布的油漆应用程序实现橡皮擦:

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);

因此,我没有在上面添加视图的布局。我放置了一个父母布局,其中包括一个布局和一个imageView。我将背景图像放在ImageView上。我在孩子的布局上放了一张透明的图片。然后将孩子的布局放到前面,现在正常工作

相关内容

  • 没有找到相关文章

最新更新