这可能是一个非常愚蠢的问题,但是有人能告诉我使用UIGraphicsBeginImageContext创建CGContextRef和使用CGBitmapContextCreate绘制图像有什么区别吗?特别是现在,由于UIKit绘图是线程安全的,我想知道是否有任何理由使用CGBitmapContextCreate而不是UIGraphicsBeginImageContext。
发布于 2010-12-16 01:46:20
根据苹果的UIKit Function Reference,它带有2010年11月15日的封面日期,UIGraphicsBeginImageContext和相关函数仍然应该只在主线程上调用。在最新的Xcode 3.2.5附带的开发人员文档中重复了相同的文本。然而,它对UIGraphicsGetCurrentContext报告了同样的情况,我现在明确地认为它是线程安全的。我的理解是,现在只有UIGraphicsGetCurrentContext和UIImage、UIColor和UIFont类是线程安全的,而不是整个UIKit,但我找不到明确的参考。
无论如何,UIGraphicsBeginImageContext是一个UIKit包装器,它位于CGBitmapContextCreate之上,减少了它的功能。特别是,您只能使用具有固定分量顺序的RGBA色空间图像(尽管它因iOS版本而异),并且不能为绘制指定自己的目标缓冲区。因此,例如,做一堆CoreGraphics合成,然后将结果发布到OpenGL是无用的,并且对于将已经以某种数组形式获得的图形传输到CoreGraphics中也没有帮助。
但是,如果UIKit方法支持所需的功能并且可以安全地使用,则CoreGraphics方法没有固有的优势。
https://stackoverflow.com/questions/4451855
复制相似问题