IOS 改变图形上下文中的形状:平移、缩放、旋转

原文: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过程。


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值