iOS 上的 UIGraphicsBeginImageContext 与 CGBitmapContextCreate

2024-02-21

这可能是一个非常愚蠢的问题,但是有人可以告诉我使用 UIGraphicsBeginImageContext 创建 CGContextRef 和使用 CGBitmapContextCreate 绘制图像之间的区别吗?特别是现在,由于 UIKit 绘图是线程安全的,我想知道是否有任何理由使用 CGBitmapContextCreate 而不是 UIGraphicsBeginImageContext。


根据苹果公司的UIKit 函数参考 http://developer.apple.com/library/ios/documentation/uikit/reference/UIKitFunctionReference/UIKitFunctionReference.pdf,封面日期为 2010 年 11 月 15 日,UIGraphicsBeginImageContext相关函数仍应仅在主线程上调用。最新 Xcode 3.2.5 附带的开发人员文档中重复了相同的文本。然而,它报告了同样的情况UIGraphicsGetCurrentContext我现在明确理解为线程安全的。我的理解是,只有UIGraphicsGetCurrentContextUIImage、UIColor 和 UIFont 类现在是线程安全的,而不是整个 UIKit,但我无法找到明确的参考。

不管,UIGraphicsBeginImageContext是一个 UIKit 包装器,位于CGBitmapContextCreate并减少其功能。特别是,您仅限于具有固定组件顺序的 RGBA 颜色空间图像(尽管它根据 iOS 版本而变化),并且无法指定您自己的绘制目标缓冲区。因此,举例来说,它对于进行一堆 CoreGraphics 合成然后将结果发布到 OpenGL 是没有用的,并且对于将已经以某种数组形式获得的图形管道传输到 CoreGraphics 也没有帮助。

然而,当 UIKit 方法支持您需要的功能并且可以安全使用时,CoreGraphics 方法没有固有的优势。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 上的 UIGraphicsBeginImageContext 与 CGBitmapContextCreate 的相关文章

随机推荐