关于iphone:用触摸编辑CGImage(或UIImage)的alpha然后显示的最有效方法?

Fatsest way to edit alpha of CGImage (or UIImage) with touch and then display?

我有两个图像视图,一个在另一个之上,有两个不同的图像。当用户触摸图像并移动他/她的手指时,顶部图像应该沿着具有固定半径的触摸点变得透明。 (如 PhotoChop 应用程序)。

目前我正在这样做......

  • 对于每一次触摸。
  • 从顶部图像的 CGImage 获取图像缓冲区的副本。
  • 编辑缓冲区的 Alpha 通道以创建一个以触摸点为中心的透明圆圈。
  • 从缓冲区创建新的 CGImage。
  • 从 CGImage 创建 UIImage 并将新的 UIImage 用作顶部图像视图的图像。
  • 这可行,但您可以看到太多副本,涉及创建并且速度很慢。

    有人可以建议我做同样事情的更快方法吗?


    1
    CGImageCreateWithMask

    当用户绘制时,用更改修改 CGBitmapContext。保持一个链接的 CGImage 引用上下文。从原始图像和蒙版创建蒙版图像,并从中创建 UIImage

    CGImageCGBitmapContext 必须是灰度的。您可以使用 CGImageMaskCreateCGImageCreate 来制作图像,但首选前者。

    我不确定内部结构,但可能每次绘制 UIImage 时,它都会一直引用到 CGBitmapContext。换句话说,我认为不会复制任何内容,您只需要在包含 UIImage.

    的视图上添加一个 setNeedsDisplay