【问题标题】:How can I draw an image with many tiny modifications?如何绘制具有许多微小修改的图像?
【发布时间】:2013-07-11 13:29:06
【问题描述】:

我在视图上绘制了许多音频表,发现 drawRect 跟不上音频变化的速度。实际上,一次只有很小一部分图像发生变化,所以我真的只想绘制增量变化。

我创建了一个CGLayer,当数据发生变化时,我使用CGContextBeginPathCGContextMoveToPointCGContextAddLineToPointCGContextStrokePath在CGLayer中绘图。

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

当数据发生变化时,我通过在CGLayer 的顶部画一条线来绘制差异。我曾以为它就像 Photoshop 一样,新数据只是在旧数据上绘制,但我现在相信我曾经绘制的所有线条仍然存在于图层中。对吗?

如果是这样,有没有办法从CGLayer 中删除行?

【问题讨论】:

    标签: ios uiview cgcontext cglayer


    【解决方案1】:

    “音频表”到底是什么意思,显示您预期设计的一些快照。向我们展示了一些代码...

    这些是我的建议-

    1) 是的,新数据只是在 CGLayer 之上绘制,除非您发布它 CGLayerRelease(layer)

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

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

    【讨论】:

      【解决方案2】:

      我现在相信我曾经画过的所有线条都保留在图层中。对吗?

      是的。

      如果是这样,有没有办法从 CGLayer 中删除行?

      没有。那没有。您将创建一个新图层。通常,您为重复绘制的内容创建一个图层。

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 2022-01-08
        • 1970-01-01
        • 2013-02-08
        • 2021-12-31
        • 1970-01-01
        • 2021-08-31
        相关资源
        最近更新 更多