如何在我的绘图应用程序实现一个真正的橡皮擦?



我正在使用kotlin创建一个简单的绘图应用程序。我想实现一个橡皮擦,无法找到任何适当的解决方案。每种解决方案要么使用白色作为橡皮擦的替代品,要么在单击橡皮擦按钮后完全重置画布。由于我还实现了从图库中导入背景图像的功能,所以我不能使用白色作为橡皮擦。

画布上没有神奇的橡皮擦,因为擦除只不过是在画布上画一些东西。你不能将paint的颜色设置为Transparent,并在画布上绘制以擦除已经绘制的内容。这只是绘制透明的东西,基本上什么都没有。

因此,您需要使用Color来实现擦除器。通常这是白色的,因为背景通常设置为白色。因此,这会产生擦除内容的效果。

在您的例子中,您有一个背景图像。为了实现这个橡皮擦,你需要2个画布。背景图像将绘制在第一个画布上。所有其他内容(drawCircle, drawRect, drawPath等)都被绘制到第二个画布上。现在,您可以将bitmap从第二个画布中取出并在第一个画布中绘制(drawBitmap)。这就是最终的外观。现在,在这个设置中,你可以使用"White"作为从第二画布上擦除的颜色。当将第二个画布内容绘制到第一个画布上时,使用portterduff模式之一,以便"白色"消失。

最新更新