15.5 知识拓展

15.5 知识拓展

如果要绘制一个倾斜的矩形,相信读者会想到通过角度计算每个顶点的位置,然后绘制出来。其实不必那么麻烦,Core Graphics为我们提供了一些简单的方法对这类变换进行处理:首先我们需要有一个概念,叫CTM(current transformation matrix)当前变换矩阵,然后通过这个矩阵将坐标系中的点重新映射到屏幕上,产生一定的变换。

这些方法在CGContext的实例中,如下所列:

1.rotate(by:)

旋转坐标系,by参数传入以弧度表示的角度,用于旋转指定上下文的坐标。正值为逆时针旋转,负值为顺时针旋转。

2.scaleBy(x:y:)

改变坐标系的比例,x参数为X轴放大倍数、y参数为Y轴放大倍数。

3.translateBy(x:y:)

平移坐标系,x参数为X轴偏移值、y参数为Y轴偏移值。

4.concatenate(_:)

使用指定的矩阵转换坐标系,当我们调用这个函数时,它将通过矩阵的相乘来连接两个矩阵。矩阵连接的顺序很重要,因为矩阵乘法是不可交换的。图形上下文中得到的新CTM,是transform矩阵乘以现有的CTM的结果。

通过上述四种方法,我们便可以轻松处理一些坐标系上的变化。但要注意的是,这些方法一经调用马上生效。