记录一次Quartz2D学习(五)
(四)内主要讲了绘制状态的保存与恢复
本次主要讲述 缩放,旋转,平移等操作
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学习(五)的更多相关文章
- 记录一次Quartz2D学习(六)
(五)内主要讲到了一些图层操作 本次主要讲 图片的裁剪 6图片裁剪 6.1 图片裁剪 TIP: 可能会影响统一图层的显示 - (void)drawRect:(CGRect)rect { CGConte ...
- 记录一次Quartz2D学习(一)
经常看点 drawRect的重写 但是不知道这究竟是神马 今天开始学习这一块的东西,更确切地说是深入 早在view的时候 就经常会调用layer的maskToBounds属性,其实 重写 drawR ...
- 记录一次Quartz2D学习(七)
(六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1 通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...
- 记录一次Quartz2D学习(四)
(三)内主要讲了图片与文字的绘制 本次主要讲解 绘制状态的保存与恢复,以及对它的使用 4.绘制状态 4.1 绘制状态的保存与恢复,以及对它的应用 TIP:通过对保存恢复绘制状以及多次的渲染,可以绘制出 ...
- 记录一次Quartz2D学习(三)
在(二)内,讲到了几何图形的绘制,这次就讲文本与图片的绘制 3 图片与文本 3.1 文本绘制 - (void)drawRect:(CGRect)rect { NSString * str = @&qu ...
- 记录一次Quartz2D学习(二)
(一)内主要就是讲了线条的绘制以及绘制状态的保存与恢复 本次就讲一些图形的画法 2 图形的绘制 2.1 三角形的绘制 :(就是绘制三条线) - (void)drawRect:(CGRect)rect ...
- (转)MyBatis框架的学习(五)——一对一关联映射和一对多关联映射
http://blog.csdn.net/yerenyuan_pku/article/details/71894172 在实际开发中我们不可能只是对单表进行操作,必然要操作多表,本文就来讲解多表操作中 ...
- TweenMax动画库学习(五)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
随机推荐
- 基于token的多平台身份认证架构设计
基于token的多平台身份认证架构设计 1 概述 在存在账号体系的信息系统中,对身份的鉴定是非常重要的事情. 随着移动互联网时代到来,客户端的类型越来越多, 逐渐出现了 一个服务器,N个客户端的格 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- Entity Framework 6 Recipes 2nd Edition(9-1)译->用Web Api更新单独分离的实体
第九章 在N层结构的应用程序中使用EF 不是所有的应用都能完全地写入到一个单个的过程中(就是驻留在一个单一的物理层中),实际上,在当今不断发展的网络世界,大量的应用程序的结构包含经典的表现层,应用程, ...
- Struts2+Spring+Hibernate框架整合总结详细教程
一.SSH三大框架知识总结 Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架.其全新的Struts 2的体系结构与S ...
- My First Android Application Project 第一个安卓应用
一.前言: 安卓(Android):是一种基于Linux的自由及开放源代码的操作系统,主要用在移动设备上,如手机.平板电脑.其他的设备也有使用安卓操作系统,比如:电视机,游戏机.数码相机等等. 二.具 ...
- $(document).ready() 与window.onload的区别
1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕. 2.编写个数不同 ...
- ASP.NET Core中的依赖注入(3): 服务的注册与提供
在采用了依赖注入的应用中,我们总是直接利用DI容器直接获取所需的服务实例,换句话说,DI容器起到了一个服务提供者的角色,它能够根据我们提供的服务描述信息提供一个可用的服务对象.ASP.NET Core ...
- 如何在删除ibdata1和ib_logfile的情况下恢复MySQL数据库
昨天,有个朋友对公司内部使用的一个MySQL实例开启binlog,但是在启动的过程中失败了(他也没提,为何会失败),在启动失败后,他删除了ibdata1和ib_logfile,后来,能正常启动了,但所 ...
- 2.C#WinForm基础Email分析器
功能:输入Email地址,输出用户名和域名 string[] String.split(params char[] separator)(+5重载)) 返回的字符串数组包含此实例的字符串(由指定Uni ...