IOS 改变图形上下文中的形状:平移、缩放、旋转
2012-08-23 10:24
519 查看
一、平移图形上下文中的形状
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过程。
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过程。
相关文章推荐
- IOS 改变图形上下文中的形状:平移、缩放、旋转
- iOS 图形上下文的矩阵操作(平移、旋转、缩放)
- 七 iOS之 矩阵操作(图形上下文的平移、缩放、旋转)
- ios-day02-03(使用transform对按钮进行平移、缩放、旋转)
- 图形开发之基于向量矩阵的平移、旋转、缩放
- ios动画 calyer-旋转,缩放,裁剪,阴影,平移等
- [置顶] 第四节 WebGL中的图形变换:旋转、平移和缩放
- 利用Turbo C进行平面二维图形的平移,旋转,缩放,对称
- iOS学习(frame、bounds、center:)以及UIView的旋转,平移和缩放
- iOS控件的缩放,平移,旋转和回到原点
- canvas之图形的变化(平移,缩放,旋转)
- iOS 利用平移缩放旋转手势对view实现对应的平移缩放旋转效果(一)
- WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示
- iOS 开发----CGAffineTransform平移,旋转,缩放
- 使用GDI+变换矩阵实现图形的平移、缩放及旋转
- 【Android开发】图形图像处理技术-旋转、缩放、倾斜和平移图像
- IOS-官方文档CGAffineTransform(旋转,缩放,平移)
- iOS开发:旋转、缩放、平移
- Html5 canvas学习5-图形变形:缩放 旋转 平移 变形
- 使用GDI+变换矩阵实现图形的平移、缩放及旋转