记录一次Quartz2D学习(一)
经常看点
drawRect的重写 但是不知道这究竟是神马
今天开始学习这一块的东西,更确切地说是深入
早在view的时候 就经常会调用layer的maskToBounds属性,其实 重写
drawRect方法 也就是对layer的一个绘制
重写也比较简单
1 线条
1.1 下面就是简单地线条的画法:(效果如图)
- (void)drawRect:(CGRect)rect {
// Drawing code
//获取绘制图形的上下文
CGContextRef ctx =UIGraphicsGetCurrentContext();
//设置线条的宽度
CGContextSetLineWidth(ctx, 20);
//设置线条的填充颜色
CGContextSetRGBStrokeColor(ctx, 250, 250, 250, 0.5);
//设置线条的起点
CGContextMoveToPoint(ctx, 100, 100);
//添加线条
CGContextAddLineToPoint(ctx, 150, 150);
//设置线条的圆角
CGContextSetLineCap(ctx, kCGLineCapRound);//kCGLineCapRound 属性有多种,可以设置线条的各种边角状态
//进行绘制
CGContextStrokePath(ctx);
}
1.2 一笔画两条线段
方法重写如下:
- (void)drawRect:(CGRect)rect {
CGContextRef ctx =UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx, 20);
CGContextSetRGBStrokeColor(ctx, 250, 250, 250, 0.5);
CGContextMoveToPoint(ctx, 100, 100);
CGContextAddLineToPoint(ctx, 150, 150);
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//这两句是在此前的基础上添加的
//先移动到对应的点,再进行绘制
CGContextMoveToPoint(ctx, 150, 150);//可有可无 , 没有这句,效果相同
CGContextAddLineToPoint(ctx, 100, 200);
CGContextStrokePath(ctx);
}
1.3 绘制状态的保存问题 :
当你保存了绘制的状态 之后,就可以回复到上一次保存的状态
TIP: 保存与恢复方法,要成对出现,否则会出现报错---原因,栈内不存在绘制状态
重写方法如下
- (void)drawRect:(CGRect)rect {
CGContextRef ctx =UIGraphicsGetCurrentContext();
//保存当前的绘制状态
CGContextSaveGState(ctx);
CGContextSetLineWidth(ctx, 20);
CGContextSetRGBStrokeColor(ctx, 250, 250, 250, 0.5);
CGContextMoveToPoint(ctx, 100, 100);
CGContextAddLineToPoint(ctx, 150, 150);
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineJoin(ctx, kCGLineJoinRound);
//提取出上一次保存的绘制状态
CGContextRestoreGState(ctx);
//另外一种颜色的设置方法
[[UIColor yellowColor] set];
CGContextMoveToPoint(ctx, 150, 150);//可有可无 , 没有这句,效果相同
CGContextAddLineToPoint(ctx, 100, 200);
CGContextStrokePath(ctx);
}
记录一次Quartz2D学习(一)的更多相关文章
- 记录一次Quartz2D学习(七)
(六)内主要讲述了图片的裁剪 本次主要讲交互 7.交互 7.1 通过外部刷新内部的显示效果 初始化的时候设定好初始值,调用setNeedsDisplay方法来重新绘制 - (instancetype ...
- 记录一次Quartz2D学习(六)
(五)内主要讲到了一些图层操作 本次主要讲 图片的裁剪 6图片裁剪 6.1 图片裁剪 TIP: 可能会影响统一图层的显示 - (void)drawRect:(CGRect)rect { CGConte ...
- 记录一次Quartz2D学习(五)
(四)内主要讲了绘制状态的保存与恢复 本次主要讲述 缩放,旋转,平移等操作 5.附加操作 5.1 旋转 TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点 - (void)dra ...
- 记录一次Quartz2D学习(四)
(三)内主要讲了图片与文字的绘制 本次主要讲解 绘制状态的保存与恢复,以及对它的使用 4.绘制状态 4.1 绘制状态的保存与恢复,以及对它的应用 TIP:通过对保存恢复绘制状以及多次的渲染,可以绘制出 ...
- 记录一次Quartz2D学习(三)
在(二)内,讲到了几何图形的绘制,这次就讲文本与图片的绘制 3 图片与文本 3.1 文本绘制 - (void)drawRect:(CGRect)rect { NSString * str = @&qu ...
- 记录一次Quartz2D学习(二)
(一)内主要就是讲了线条的绘制以及绘制状态的保存与恢复 本次就讲一些图形的画法 2 图形的绘制 2.1 三角形的绘制 :(就是绘制三条线) - (void)drawRect:(CGRect)rect ...
- iOS学习——Quartz2D学习之UIKit绘制
iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...
- iOS学习——Quartz2D学习之DrawRect
Quartz2D学习之DrawRect 本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料. 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Ma ...
- 开通博客第一天,记录此时此刻,开始学习加强c#
从2017年6月毕业到现在,不断的学习.net,在工作中不断的加强技术,终于在此时此刻决定开通博客,记录此后每一天学习的技术点,两年来,每天所涉及的技术点很杂,学了这个忘了那个,总感觉在进步却总是觉得 ...
随机推荐
- 如何获取byte的各个bit值以及常见位操作
项目中通过信号采集板的数据获取车上仪表盘指示灯的信息,将接收到的数据转成byte后,还要将每一个Byte的各个Bit值分离出来,这样才知道每个bit的值代表的具体信息.这里记录下如何获取byte的各个 ...
- SQL Server里的文件和文件组
在今天的文章里,我想谈下SQL Server里非常重要的话题:SQL Server如何处理文件的文件组.当你用CREATE DATABASE命令创建一个简单的数据库时,SQL Server为你创建2个 ...
- window.open
window.open 的三个参数 第一个参数:url 第二个参数:对应新打开标签或者窗口的window.name属性,如果为填默认为 "_blank" 第三个参数:如果有则打开的 ...
- 优化MySchool数据库设计
第一章 数据库的设计 1.E-R图中: 矩形:实体 椭圆:属性 菱形:关系 直线:连接实体,属性和关系 2.映射基数 一对多 多对一 多对多 3.范式: 第一范式:确保每列的原子性 第二范式:确保表中 ...
- 初入网络系列笔记(6)TFTP协议
一.借鉴说明,本博文借鉴以下博文 1.锤子,FTP协议,http://www.cnblogs.com/loadrunner/archive/2008/01/09/1032264.html 2.suna ...
- 【转】asp.net(c#)加密解密算法之sha1、md5、des、aes实现源码详解
原文地址:http://docode.top/Article/Detail/10003 目录: 1..Net(C#)平台下Des加密解密源代码 2..Net(C#)平台下Aes加密解密源代码 3..N ...
- CSS3橙色的星球绕轨道公转动画
效果:http://hovertree.com/texiao/css3/24/ 效果图: 代码如下: <!DOCTYPE html> <html lang="zh" ...
- centos 系统下安装FastDFS+nginx+fastdfs-nginx-module安装配置
前言: 以前的项目上传的文件都是保存到本地或者是局域网内的共享文件夹下,由于数据量,服务器的负载均衡(分机的某些图片无法访问的问题处理)等因素的情况下,就想到用fastdfs来文件管理,花了几天时间硬 ...
- 3、Python字符串和循环
1.while循环 #猜lucky_number = 6 #如果比6大,提示你猜的大了 #如果比6小,提示你猜的小了 #猜的等于6,提示Bingo #限制3次 lucky_num = 6 count ...
- css的三种样式
1.行间样式 顾名思义就是直接写在div对里面的样式 2.内部样式 把样式写在一对<style></style>标签对中 这个标签对是放在html页面里面的 3.外联样 ...