2013-07-11 73 views
1

我在视图上绘制了很多音频流量计,发现drawRect跟不上音频变化的速度。实际上,图像中只有很小的一部分会一次更改,所以我只想绘制增量更改。我怎样才能绘制一个很小的修改图像?

我创建了一个CGLayer和数据改变时我用CGContextBeginPathCGContextMoveToPointCGContextAddLineToPointCGContextStrokePath在CGLayer绘制。

drawRect的视图中,我使用CGContextDrawLayerAtPoint来显示图层。

当数据发生变化时,我通过在CGLayer的顶部绘制一条线来绘制差异。我认为它就像photoshop,新的数据刚刚吸引了过去,但现在我相信我所绘制的所有线条都保留在图层中。那是对的吗?

如果是的话是否有办法从CGLayer中删除行?

回答

0

“音频计量器”的含义究竟是什么,它显示了您的预期设计的一些快照。我们展示了一些代码...

这些都是我suggestions-

1)是新的数据只是借鉴了CGLayer顶部,除非你释放CGLayerRelease(layer)

2)CGContextStrokePath是昂贵的操作。您可能需要创建一个通用线条笔划并将它们存储在UIImage中。然后每次数据更改时重新使用UIImage

3)最简单的解决方案:使用UIProgressView如果你只是想显示音频电平。

0

我现在认为我所绘制的所有线条都保留在图层中。那是对的吗?

是的。

如果是的话是否有办法从CGLayer中删除行?

不,没有。你会创建一个新的图层。一般来说,您可以为重复绘制的内容创建一个图层。

您的图形可能可以通过绘制矩形而不是路径来简化。

对于一些音频仪表,将仪表分成多个部分可能会有帮助(您可以在这里使用CGLayer)。同样,您可能可以选择性地绘制矩形和/或剪裁图形,图像和/或图层。

相关问题