【发布时间】:2015-05-09 06:53:59
【问题描述】:
我想知道是否有在不使用Path 类并调用canvas.drawPath(...) 的情况下使用Android Canvas 绘制填充区域(如填充多边形)的方法。
我想在没有Path 的情况下这样做的原因是因为我必须绘制非常大的数据集,而canvas.drawPath(...) 没有硬件加速,因此速度很慢。
由于硬件加速,使用canvas.drawLines(...) 时的性能要好得多,但是我还没有找到一种方法来绘制使用这种方法填充的多边形(即使线条全部连接)。
使用drawLines(...) 时,即使调用paint.setStyle(Style.FILL) 也不会填充多边形。
有没有不使用Path 方法来绘制填充多边形的方法?
或者有没有其他方法使用Canvas提高性能?
【问题讨论】:
-
您的
view是否具有交互性(您是否对数据集进行了动态更改需要渲染)?简单地将数据集绘制到canvas一次很慢? -
我的视图是交互式的,因此会不断刷新,我已经在使用缓冲机制,大大提高了性能。但是,我还不满意。
-
我的最后一个问题是详细回答。当您的数据集发生更改时,您是再次绘制整个数据集还是仅绘制更改区域中受影响的数据集?我的意思是,你已经在使用
view.invalidate(Rect dirty)了吗?这只是提高性能的一个提示。 -
这实际上是一个非常好的主意。但我认为它不能在我的情况下使用,因为我正在绘制图表并且当它是例如放大和滚动,整个视图需要刷新。
-
你想开始对话吗?我在 android 绘图应用程序上工作并遇到了一些这样的问题。如果你愿意,我可以分享一些我的“诀窍”。
标签: android android-canvas custom-draw