核心图形坐标系原点混乱

core graphics coordinate system origin confustion

我对 UIKit 和 Core Graphics 之间的坐标系差异感到有点困惑。 Apple 文档指出 UIKit 使用 ULO(左上原点),而 Core Graphics 使用 LLO(左下原点)。

但是,如 a post about coordinate systems 所述,UIKit

helpfully flips the coordinate system before calling -drawRect:

当我在(0,0)处画一个矩形时,它确实在左上角,所以看起来确实翻转了。但是,当我使用 CGContextDrawImage() 绘制图像时,它仍然被翻转。我知道我可以只使用 drawAtPoint() 来避免颠倒的图像,但我只是对坐标系感到好奇:如果它被 UIKit 翻转,为什么图像在被绘制到翻转的上下文中时仍然颠倒?另外,有没有办法获得未翻转的坐标系?也就是说,有没有办法不通过 UIKit 创建 CGContext?

谢谢!

由于我没有得到答案,我将提出我的最佳猜测:UIKit "helpfully" 将上下文从 LLO 翻转到 ULO,但与路径不同的是,图像在内部有自己的坐标系(对于图片)。在 Core Graphics 中,此坐标系被解释为 LLO,因此它是颠倒的。

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

任何comments/corrections赞赏。