Quratz 使用current transformation matrix(CTM)完成了具体的坐标系统的无关性(完成了user space和device space的映射)。CTM是一个数学结构的矩阵,能够有效的描述一些相关的方程组。current transformation matrix是一个特殊的矩阵类型成为affine transform,其应用translation,rotation,和scaling 操作(计算一个坐标系统的move,rotate,resize)映射一个坐标系统的点到另一个坐标系统。 

   CTM有第二个目的。其允许我们transform绘制的对象。例如,我们想去绘制一个旋转45度的box,可以先绘制一个box,然后旋转坐标系统,Quratz用旋转的坐标系统去把其绘制在输出设备上。

   Quratz的缺省坐标系统如上图,原点在左下角。但是有些技术建立的graphics context和Quartz使用了不同的缺省坐标系统。最常见的是坐标系统是原点在左上角。在下面的情况下我们是在此坐标系统下:

IOS中,UIView返回的drawing context。

IOS中,调用函数UIGraphicsBeginImageContextWithOptions创建的drawing context。





6.内存管理:对象的所有权

  Quratz 使用Core Foundation的内存管理模型,引用计数。当创建时,Core Foundation对象的引用计数为1.我们可以通过调用retain函数去增加引用计数,调用release函数去减少引用计数。

  

  一下有几点我们需要牢记:

(1)当我们创建或者copy一个对象,则我们就拥有它,在用完之后我们一定要release它。

(2)如果我们不是从一个包含“create”和“copy”词的函数得到的对象,则不能不要去release它。

(3)如果我们没有对象的所有权,但是我们想保存他,则应该reatin它,并且记得release。例如,如果我们创建一个CGColorspace对象,则我们用函数CGColorSpaceRetain和CGColorSpaceRelease去retain和release。