核心graphics坐标系统

当重写drawRect我发现坐标那里使用0,0作为左上angular。

但苹果UIView编程指南说:

一些iOS技术定义了默认坐标系统,其原点和方向与UIKit所使用的不同。 例如,Core Graphics和OpenGL ES使用坐标系统,坐标系统的原点位于视图或窗口的左下angular,y轴相对于屏幕向上。

我很困惑; 当他们提到Core Graphics的时候,他们是否在谈论与Quartz不同的东西?

这个文档中的“Core Graphics”是指“Quartz”。 这只是一个简单的过程。

当你自己创build一个CGContext ,它的坐标系统的原点在左下angular。 当UIKit创build用于绘制到视图中的CGContext ,它在调用-drawRect:之前有助于翻转坐标系。

就坐标而言,iOS上的Core Graphics和Quartz是相同的。 iOS技术指南是这样说的:

核心graphics(也称为Quartz)…

Core Graphics框架(CoreGraphics.framework)包含Quartz 2D绘图API的接口。 Quartz是在Mac OS X中使用的先进的,基于vector的绘图引擎。

区别在于,从技术上讲,Quartz是技术或机制,而“Core Graphics”是框架的名称。 (在Mac OS上,当然实际上有一个“Quartz”框架,它只是一个保护伞。)

为了别人的利益find这个线程:

这里有一个坐标系统的完整解释: cocoa坐标系统

它们并不完全有帮助。 有一些方法可以在应用程序的各个视图之间转换坐标系统! 例如,在放大的图像的可见屏幕上find它在(20,20)处的坐标。 结果是相对于现在可能在太空中放大的缩放图像的起源。

 croppingFrame.origin = [self convertPoint:CGPointMake(20.0, 20.0) fromCoordinateSpace:(self.window.screen.fixedCoordinateSpace)];