Quartz 2D编程指南定义了各种Alpha存储模式的可用性:
对于RGB上下文,应该使用哪些模式?为什么?
对于非不透明上下文,使用kCGImageAlphaPremultipliedFirst
或kCGImageAlphaPremultipliedLast
?
对于不透明上下文,使用kCGImageAlphaNoneSkipFirst
或kCGImageAlphaNoneSkipLast
?
选择值是否会影响性能?
通常,我看到非不透明情况下使用kCGImageAlphaPremultipliedFirst
和不透明情况下使用kCGImageAlphaNoneSkipFirst
。有些人表示这些方式的表现更好,但我没有看到任何硬证据或文档支持这个说法。
快速搜索GitHub显示,开发者们更喜欢kCGImageAlphaPremultipliedFirst
而不是kCGImageAlphaPremultipliedLast
,而且更喜欢kCGImageAlphaNoneSkipLast
而不是kCGImageAlphaNoneSkipFirst
。不幸的是,这只是一些经验性的证据。
CGBitmapContextCreate
代码,而不会考虑是否使用了正确的位图信息。 - hpique