用触摸然后显示来编辑UIImage(vs UIImage)的alpha的最快方法?

时间:2010-05-09 06:40:40

标签: iphone xcode uiimage alpha cgimage

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

目前我这样做......

  1. 每次触碰。
  2. 从顶部图像的CGImage获取图像缓冲区的副本。
  3. 编辑缓冲区的Alpha通道以创建以触摸点为中心的透明圆圈。
  4. 从缓冲区创建新的CGImage。
  5. 从CGImage创建UIImage,并使用新的UIImage作为顶部图像视图的图像。
  6. 这样可行但是因为你可以看到太多的副本,所涉及的创建都很复杂。

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

1 个答案:

答案 0 :(得分:1)

CGImageCreateWithMask

在用户绘制时,使用更改修改CGBitmapContext。保留引用上下文的链接CGImage。从原始图像和蒙版创建蒙版图像,然后从中创建UIImage

CGImage以及CGBitmapContext必须为灰度。您可以使用CGImageMaskCreateCGImageCreate制作图片,但前者是首选。

我不确定内部情况,但可能每次绘制UIImage时它都会一直引用CGBitmapContext。换句话说,我认为没有任何内容被复制,你需要的只是包含UIImage的视图上的setNeedsDisplay