为什么Canvas.drawPath()这么慢?

时间:2013-05-27 16:20:07

标签: android performance canvas

我曾经说过,使用Canvas.drawPath(path,paint)会比连续的Canvas.drawLine()慢得多,或者使用Canvas.drawLines()。 我无法提供准确的性能数据,但我注意到在Nexus 10上使用路径绘图非常慢(<10 FPS),而使用drawLines则更加平滑。 是否有一些实现错误或者可能是一个参数来加速这种性能? 截至目前,我根本无法使用drawPath(),因为性能很差。

3 个答案:

答案 0 :(得分:1)

我在使用drawPath时遇到了问题(特别是在我的Nexus 10上)。我的问题归结为我正在设置

strokePaint.setMaskFilter(new BlurMaskFilter(16f, BlurMaskFilter.Blur.NORMAL));

这使得表现很糟糕。 Canvas.drawPath执行45毫秒。一旦我删除它,我的执行时间在2-4毫秒

之间

答案 1 :(得分:1)

如果需要多次调用drawPath(),需要在调用drawPath()之前先调用path.reset()

答案 2 :(得分:0)

抱歉,不能发表评论。 drawPath()正在进行更多的额外调用。路径是一个 对象而不是数组。你能算出所有额外的电话吗? 这是制作的。这是一种Pa​​int需要的方法。这不好 快速多线绘图。这意味着更多的绘画。

相关问题