我通读了Quartz 2D Programming Guide中的Transforms文档。其中似乎有两种方法可以进行转换。一种方法是修改当前转换矩阵(CTM)。它有如下方法:
CGContextTranslateCTM
CGContextRotateCTM
CGContextScaleCTM
另一种方法是使用仿射变换。它有如下方法:
CGAffineTransformTranslate
CGAffineTransformRotate
CGAffineTransformScale
文档状态
Quartz中可用的仿射变换函数在矩阵上运行,而不是在CTM上运行。
但我不明白这实际上是如何影响我的。看起来我可以使用任何一种方法获得相同的结果。我什么时候应该使用CTM变换?什么时候应该使用仿射变换?
答案 0 :(得分:2)
CTM是当前的转换矩阵,CTM方法将对当前矩阵进行操作。
其他版本的函数将在给定矩阵上进行转换,这意味着您需要指定要转换的矩阵。在您这样做之后,您可以以任何您想要的方式将变换应用于CTM,或将其用于任何其他目的。
例如,这两个操作是相同的:
CGContextTranslateCTM(context, 10, 10);
仿射:
CGAffineTransform transform = CGAffineTransformIdentity;
transform = CGAffineTransformTranslate(transform, 10, 10);
CGContextConcatCTM(context, transform);
正如您所看到的,第一个或多或少只是一个便利,所以您不需要编写这么多代码。