原文:http://blog.csdn.net/pop_xiaohao/article/details/7898449
一、平移图形上下文中的形状
1、使用仿射平移变换,为了创建一个新的平移变换,我们需要使用CGAffineTransformMakeTranslation函数,它将返回一个CGAffineTransform类型的仿射变换。这个函数的两个参数指定x和y方向上以点为单位的平移量。利用绘制矩形函数CGPathAddRect接受一个CGAffineTransform类型的变换对象作为参数,将一个矩形从它原来的位置平移到其他位置。
CGAffineTransform transform =
CGAffineTransformMakeTranslation(100.0f, 0.0f);
/* Add the rectangle to the path */
CGPathAddRect(path, &transform, rectangle);
2、我们还可以通过CGContextTranslateCTM过程对图形上下文应用变换。这样把一个平移变换应用到当前变换矩阵(CTM,current transformation matrix)。当前变换矩阵,把CTM认为是它设置了你的图形上下文的中心,是它把你绘制的每个点投射到屏幕上。例如,当你要求在Core Graphics 在(0,0)处绘制一个点,Core Graphics通过查找CTM来寻找屏幕的中心,CTM做些计算,并告诉Core graphics 点(0,0)是在屏幕的左上角。使用过程如CGContextTranslateCTM,你可以改变CTM的配置,然后强制所有的绘制在图形上下文的形状转移到画布上的另一个地方。注意图形上下文的保存和还原。 CGContextSaveGState(currentContext);, CGContextRestoreGState(currentContext);
二、缩放图形上下文中的形状:
缩放类似于平移操作,可以把缩放理解为另一种你可以使用的变换。
1、使用仿射缩放变换,使用CGAffineTransforMakeScale函数创建一个仿射缩放变换。它返回一个CGAffineTransform类型的变换对象。
CGAffineTransform transform =
CGAffineTransformMakeScale(0.5f, 0.5f);
/* Add the rectangle to the path */
CGPathAddRect(path, &transform, rectangle);
2、直接对一个图形上下文使用缩放变换,使用CGContextScaleCTM过程来缩放当前变换矩阵(CTM):
/* Scale everything drawn on the current graphics
context to half itssize */
CGContextScaleCTM(currentContext, 0.5f, 0.5f);
三、旋转图形上下文中的形状
类似于缩放与平移,可以对绘制在路径上的形状 和 图形上下文应用旋转变换
1、使用CGAffineTransforMakeRotation函数和一个旋转的弧度值来获取一个CGAffineTransform类型的旋转变换,然后可以讲此变换应用到路径和形状上。
//rotate the rectangle 45 degrees clockwise
CGAffineTransform transform=CGAffineTransformMakeRotation((45.0f*M_PI)/180.0f);
// add the rectangle to the path
CGPathAddRect(path,&transform,rectangle);
2、如果想对整个上下文选择指定的角度,可以使用 CGContextRotateCTM过程。