我一直在尝试更改 Android (v3.0 Honeycomb) API 演示 FingerPaint (API >= 11),以包含一个可删除最后绘制路径的有效删除选项。
API 演示中的删除效果不佳,在 v3.0 中会崩溃,在 v3.1 中会绘制一个黑框,而仅部分删除路径(已提出错误,不确定是否已在 v3 中解决) .2 [不适用于英国的 Xoom 设备])。
我的代码如下:
public void eraseLastPath() {
if (!mPaths.isEmpty()) {
mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
mCanvas.drawPath(mPaths.pop(), mPaint);
invalidate();
}
}
这有点有效,但会在 Canvas 上留下绘制路径的轮廓。例如
这个:
被删除后看起来像这样:
我错过了什么?有没有更好的方法来删除路径?
非常感谢任何帮助。
谢谢
乔
最佳答案
尝试打开 mPaint 抗锯齿功能。
编辑:
删除路径的正确方法是将所有笔划存储到 ArrayList 中,然后删除不需要的笔划并重新绘制所有内容。问题中使用的方法并不是真正删除路径,而更像是在其上绘制另一种颜色,但是抗锯齿的工作方式与第一种颜色的工作方式不同。
每个路径都需要是新类“笔划”中的成员对象,该类还存储了颜色、绘画、滤镜等。这样所有的绘制都可以恢复,并且可以无限撤销。
关于paint - 在 Android FingerPaint 演示中如何删除绘制的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7063868/