iphone - 通过触摸编辑 CGImage(或 UIImage)的 alpha 然后显示的最快方法?

标签 iphone xcode uiimage alpha cgimage

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

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

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

这可行,但正如您所看到的,涉及太多复制、创建,而且速度很慢。

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

最佳答案

CGImageCreateWithMask

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

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

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

关于iphone - 通过触摸编辑 CGImage(或 UIImage)的 alpha 然后显示的最快方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2796849/

相关文章:

iphone - UITabBarController - 如何访问 View Controller ?

c++ - Xcode 上的 OpenCV 运行重叠窗口

objective-c - iOS 将图像拉伸(stretch)到全屏

ios - Xcode - 从 UIImageView 到新的 ViewController

xcode - 添加为 subview 时,CustomViewController 的 View 布局变得错误

swift - 使用较小的 UIImage 为 UIActivityViewController 设置缩略图

ios - 如何在ios中按降序对UIImage添加NSMutableArray进行排序

iphone - 使用 iPhone 客户端和 Node.js 服务器进行 Facebook 或 Twitter 身份验证

iphone - 绘画应用中的 UISwipeGestureRecognizer

iphone - 为什么在所有方法都是可选的情况下使用 Objective-C 协议(protocol)?