最近在做一个画板功能,大致的不同颜色画笔、不同粗细已经实现。
参照的是该教程: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,我可以做多個view重疊的效果實現圖層,分層處理觸控事件,最後導出圖片時合併bitmap資料
2,同樣我也可以只用一個view,將每一層的影像資料都保存在list中,繪製時依照順序依序繪製,在最頂層的最後繪製,最頂層的也就是你所能修改的,最後導出影像時合併資料
所謂影像處理也就是一個資料集合,你想分層處理就必須將每一段資料獨立儲存到不同的儲存單元中,這樣你修改後面的資料單元就不會影響到前面的數據,之前我也做過這樣的畫板,例子似乎找不到了,但是思路就是這樣,祝你好運