(四)内主要讲了绘制状态的保存与恢复

本次主要讲述 缩放,旋转,平移等操作

5.附加操作

  5.1 旋转

  TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点

- (void)drawRect:(CGRect)rect {

//获取上下文

CGContextRef  ctx = UIGraphicsGetCurrentContext();

//设置线条的宽度

CGContextSetLineWidth(ctx, 10);

//保存绘制的状态

CGContextSaveGState(ctx);

//设置线条的颜色

[[UIColor yellowColor] set];

//旋转,需要提前到开始绘制之前进行旋转

CGContextRotateCTM(ctx, M_PI_4);

//移动起始点到

CGContextMoveToPoint(ctx, 100, 100);

//添加线条

CGContextAddLineToPoint(ctx, 150, 150);

//渲染

CGContextStrokePath(ctx);

}

旋转之前的状态

旋转之后的状态:

5.2 缩放操作

  TIP: 缩放操作分为对图层进行放大与对绘制部分放大两种

- (void)drawRect:(CGRect)rect {

//获取上下文

CGContextRef  ctx = UIGraphicsGetCurrentContext();

//设置线条的宽度

CGContextSetLineWidth(ctx, 10);

//保存绘制的状态

CGContextSaveGState(ctx);

//缩放  ,,, 设置在此处的时候  会对整个图层进行方法

CGContextScaleCTM(ctx, 2, 1);

//设置线条的颜色

[[UIColor yellowColor] set];

//移动起始点到

CGContextMoveToPoint(ctx, 100, 100);

//添加线条

CGContextAddLineToPoint(ctx, 150, 150);

//    //缩放  ,,, 设置在此处的时候,则会对绘制的部分进行放大

//    CGContextScaleCTM(ctx, 2, 1);

//渲染

CGContextStrokePath(ctx);

}

对图层进行放大

对绘制部分的放大

5.3   平移操作

- (void)drawRect:(CGRect)rect {

//获取上下文

CGContextRef  ctx = UIGraphicsGetCurrentContext();

//设置线条的宽度

CGContextSetLineWidth(ctx, 10);

//保存绘制的状态

CGContextSaveGState(ctx);

//移动,是对图层的移动

CGContextTranslateCTM(ctx, -100, -100);

//设置线条的颜色

[[UIColor yellowColor] set];

//移动起始点到

CGContextMoveToPoint(ctx, 100, 100);

//添加线条

CGContextAddLineToPoint(ctx, 150, 150);

//移动, 猜测可能是对绘制部分的移动

// CGContextTranslateCTM(ctx, 50, 50);

//渲染

CGContextStrokePath(ctx);

}

  

记录一次Quartz2D学习(五)的更多相关文章

  1. 记录一次Quartz2D学习(六)

    (五)内主要讲到了一些图层操作 本次主要讲 图片的裁剪 6图片裁剪 6.1 图片裁剪 TIP: 可能会影响统一图层的显示 - (void)drawRect:(CGRect)rect { CGConte ...

  2. 记录一次Quartz2D学习(一)

    经常看点 drawRect的重写  但是不知道这究竟是神马 今天开始学习这一块的东西,更确切地说是深入 早在view的时候 就经常会调用layer的maskToBounds属性,其实 重写 drawR ...

  3. 记录一次Quartz2D学习(七)

    (六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1  通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...

  4. 记录一次Quartz2D学习(四)

    (三)内主要讲了图片与文字的绘制 本次主要讲解 绘制状态的保存与恢复,以及对它的使用 4.绘制状态 4.1 绘制状态的保存与恢复,以及对它的应用 TIP:通过对保存恢复绘制状以及多次的渲染,可以绘制出 ...

  5. 记录一次Quartz2D学习(三)

    在(二)内,讲到了几何图形的绘制,这次就讲文本与图片的绘制 3 图片与文本 3.1 文本绘制 - (void)drawRect:(CGRect)rect { NSString * str = @&qu ...

  6. 记录一次Quartz2D学习(二)

    (一)内主要就是讲了线条的绘制以及绘制状态的保存与恢复 本次就讲一些图形的画法 2 图形的绘制 2.1  三角形的绘制 :(就是绘制三条线) - (void)drawRect:(CGRect)rect ...

  7. (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射

    http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...

  8. TweenMax动画库学习(五)

    目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            Tw ...

  9. iOS学习——Quartz2D学习之UIKit绘制

    iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...

随机推荐

  1. TDD原则

    TDD 介绍 测试驱动开发,或者叫 TDD,是一个敏捷方法,通过确保在代码是先前手动编写测试用 例,用测试来驱动开发,从而翻转开发生命周期(它不只是作为一种校验工具). TDD 的原则很简单的: 只有 ...

  2. mvc4 自定义HtmlHelper

    好久没写博客了,最近只看博客不写的习惯很不好啊. 好了,最近的项目中大量的用到了表单,很多表单有特殊的编写,但是在该项目中又有很多重复的地方,这个时候若能封装成htmlhelper将大大降低工作量的. ...

  3. ABP框架 - 值对象

    文档目录 本节内容: 简介 值对象基类 最佳实践 简介 “一个表示领域的一个描述性方面的没有概念上的身份对象,称为值对象.“(Eric Evans). 与一个有身份(Id)实体相反,一个值对象没有身份 ...

  4. Entity Framework 6 Recipes 2nd Edition(9-3)译->找出Web API中发生了什么变化

    9-3. 找出Web API中发生了什么变化 问题 想通过基于REST的Web API服务对数据库进行插入,删除和修改对象图,而不必为每个实体类编写单独的更新方法. 此外, 用EF6的Code Fri ...

  5. StringBuffer 的 各种方法

    StringBuffer 其实提供了很多有用的方法, 以前用的多是 append, 其实还有: append(double) delete(int, int) deleteCharAt(int) re ...

  6. Android 捕获异常并在应用崩溃后重启应用

    问题概述: 在Android应用开发中,偶尔会因为测试的不充分导致一些异常没有被捕获,这时应用会出现异常并强制关闭,这样会导致很不好的用户体验,为了解决这个问题,我们需要捕获相关的异常并做处理. 首先 ...

  7. AVL树原理及实现(C语言实现以及Java语言实现)

    欢迎探讨,如有错误敬请指正 如需转载,请注明出处http://www.cnblogs.com/nullzx/ 1. AVL定义 AVL树是一种改进版的搜索二叉树.对于一般的搜索二叉树而言,如果数据恰好 ...

  8. 一步步构造自己的vue2.0+webpack环境

    前面vue2.0和webpack都已经有接触了些(vue.js入门,webpack入门之简单例子跑起来),现在开始学习如何构造自己的vue2.0+webpack环境. 1.首先新建一个目录vue-wk ...

  9. FTP的搭建与虚拟目录作用<之简单讲解>

    操作系统:win7 VS2010编写WebService与在IIS的发布<之简单讲解>中我已经说了IIS安装与使用,不明白的可以跳过去看. 1.添加FTP站点 2. 3. 4. 5. zq ...

  10. ASP.NET MVC5+EF6+EasyUI 后台管理系统(29)-T4模版

    系列目录 本节不再适合本系统,在58,59节已经重构.请超过本节 这讲适合所有的MVC程序 很荣幸,我们的系统有了体验的地址了.演示地址 之前我们发布了一个简单的代码生成器,其原理就是读取数据库的表结 ...