核心图形坐标系原点混淆问题

6
我对UIKit和Core Graphics之间的坐标系差异有些困惑。苹果文档指出,UIKit使用ULO(左上原点),而Core Graphics使用LLO(左下原点)。
然而,正如关于坐标系的文章中所述,它指出UIKit在调用-drawRect:之前会翻转坐标系。
当我在(0,0)处绘制一个矩形时,它确实位于左上角,因此似乎是翻转了。但是,当我使用CGContextDrawImage()绘制图像时,它仍然是翻转的。我知道可以使用drawAtPoint()来避免倒置的图像,但我只是好奇坐标系:如果UIKit已经翻转了它,为什么在绘制到翻转的上下文中时图像仍然是倒置的?还有,有没有办法获得未翻转的坐标系?也就是说,有没有一种方法可以创建一个CGContext而不通过UIKit?
谢谢!
1个回答

1

由于我没有得到答案,我会提出我的最佳猜测:UIKit“有用地”将上下文从LLO翻转到ULO,但是,与路径不同,图像在内部具有自己的坐标系(用于图像)。在核心图形中,这个坐标系被解释为LLO,因此它是倒置的。

至于如何在没有UIKit的情况下创建CGContext - 在过去似乎是可能的,但现在已经被删除。

欢迎任何评论/更正。


2
你对第一部分基本上是正确的。对于第二部分,CGBitmapContextCreate 自 iOS 2.0 就已经可用,至今仍然可用。 - Kurt Revis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接