Core graphics 核心图形坐标系原点混淆

Core graphics 核心图形坐标系原点混淆,core-graphics,cgcontext,coordinate-systems,Core Graphics,Cgcontext,Coordinate Systems,UIKit和核心图形之间的坐标系差异让我有点困惑。苹果公司的文档指出,UIKit使用ULO(左上原点),而核心图形使用LLO(左下原点) 然而,如中所述,需要注意的是UIKit 在调用-drawRect之前,可以帮助翻转坐标系: 当我在(0,0)处绘制一个矩形时,它确实位于左上角,因此看起来确实发生了翻转。但是,当我使用CGContextDrawImage()绘制图像时,它仍然处于翻转状态。我知道我可以使用drawAtPoint()来避免颠倒的图像,但我只是对坐标系感到好奇:如果它被UIKit翻

UIKit和核心图形之间的坐标系差异让我有点困惑。苹果公司的文档指出,UIKit使用ULO(左上原点),而核心图形使用LLO(左下原点)

然而,如中所述,需要注意的是UIKit

在调用-drawRect之前,可以帮助翻转坐标系:

当我在(0,0)处绘制一个矩形时,它确实位于左上角,因此看起来确实发生了翻转。但是,当我使用CGContextDrawImage()绘制图像时,它仍然处于翻转状态。我知道我可以使用drawAtPoint()来避免颠倒的图像,但我只是对坐标系感到好奇:如果它被UIKit翻转,为什么图像在翻转的上下文中仍然是颠倒的?还有,有没有办法得到一个不重叠的坐标系?也就是说,有没有一种方法可以在不通过UIKit的情况下创建CGContext


谢谢

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

至于在没有UIKit的情况下创建CGContext,它似乎在过去是可以实现的,但现在已经被删除了


任何评论/更正都将不胜感激。

您在第一部分基本上是正确的。对于第二部分,
CGBitmapContextCreate
从iOS 2.0开始提供,至今仍能正常工作。