Android 图片涂鸦橡皮擦功能

【字号: 日期:2022-12-14浏览:19作者:雯心

问题描述

最近在做一个画板功能,大致的不同颜色画笔、不同粗细已经实现。参照的是该教程:android-drawing-app

现在要做的功能是,从相册或者相机导入图像,然后在上面涂涂画画,由于橡皮擦的功能其实是一个白色的paint来实现的。因此用了橡皮擦,底层的图像也被画上白色了。想要的效果是橡皮擦只对新画上去的线条有作用,并不影响导入的图像。

网上大致查找资料,好像可以使用两个图层来实现,导入的图像作为最底层,新画的线条在上一层,因此橡皮擦也不会影响到最底层的图像。

导入的图片(bitmap为导入的图片):

drawCanvas.drawBitmap(bitmap, 0, 0, null);

橡皮擦功能:

public void setErase(boolean isErase) {this.isErase = isErase;if (isErase) { drawPaint.setColor(Color.WHITE);// drawPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT));} else { drawPaint.setColor(tempColor); drawPaint.setXfermode(null);}

请问如何设置两个图层,并让后续的线条只操作在第二个图层上?这里有点卡住了。或者有类似功能的demo吗?十分感谢

问题解答

回答1:

既然你提到是图层,为什么不进行分层绘制图像呢?1,我可以做多个view重叠的效果实现图层,分层处理触摸事件,最后导出图片时合并bitmap数据2,同样我也可以只用一个view,将每一层的图像数据都保存在list中,绘制时按照顺序依次绘制,在最顶层的最后绘制,最顶层的也就是你所能修改的,最后导出图像时合并数据

所谓图像处理也就是一个数据集合,你想分层处理就必须将每一段数据独立存储到不同的存储单元中,这样你修改后面的数据单元就不会影响到前面的数据,之前我也做过这样的画板,例子似乎找不到了,但是思路就是这样,祝你好运

相关文章: