3

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

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

  1. 对于每一次触摸。
  2. 从顶部图像的 CGImage 获取图像缓冲区的副本。
  3. 编辑缓冲区的 Alpha 通道以创建一个以触摸点为中心的透明圆圈。
  4. 从缓冲区创建新的 CGImage。
  5. 从 CGImage 创建 UIImage 并将新的 UIImage 用作顶部图像视图的图像。

这可行,但您可以看到太多副本,涉及创建并且速度很慢。

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

4

1 回答 1

1
CGImageCreateWithMask

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

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

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

于 2010-05-09T08:00:22.920 回答