记录一次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,在工作中不断的加强技术,终于在此时此刻决定开通博客,记录此后每一天学习的技术点,两年来,每天所涉及的技术点很杂,学了这个忘了那个,总感觉在进步却总是觉得 ...
随机推荐
- MyCAT实现MySQL的读写分离
在MySQL中间件出现之前,对于MySQL主从集群,如果要实现其读写分离,一般是在程序端实现,这样就带来一个问题,即数据库和程序的耦合度太高,如果我数据库的地址发生改变了,那么我程序端也要进行相应的修 ...
- IDDD 实现领域驱动设计-一个简单业务用例的回顾和理解
上一篇:<IDDD 实现领域驱动设计-由贫血导致的失忆症> 这篇博文是对<实现领域驱动设计>第一章后半部分内容的理解. Domain Experts-领域专家 这节点内容是昨天 ...
- geotrellis使用(十七)使用缓冲区分析的方式解决单瓦片计算边缘值问题
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 需求分析 实现方案 总结 一.前言 最 ...
- JavaScript 框架设计
JavaScript 高级框架设计 在现在,jQuery等框架已经非常完美,以致于常常忽略了JavaScript原生开发,但是这是非常重要的. 所以,我打算写一个简单的框架,两个目的 熟练框架的思想 ...
- Zookeeper数据模型及其应用
Zookeeper作为分布式系统的底层协调服务有着其简单可依靠的数据模型,数据模型加之数据同步.一致性处理和可靠性,在此之上有很多经典的应用,例如,分布式锁.服务器动态上线下感知.主节点选举.数据发布 ...
- SQL Server 数据缓存
引言 SQL Server通过一些工具来监控数据,其中之一的方法就是动态管理管理视图(DMV). 常规动态服务器管理对象 dm_db_*:数据库和数据库对象 dm_exec_*:执行用户代码和关联的连 ...
- MySQL PXC构建一个新节点只需IST传输的方法
需求场景:原有的pxc环境数据量已经比较大,新买的服务器要加入此集群中,如何让其用IST的方式传输,而不是SST. PXC传输数据有两种方式: IST: Incremental State Trans ...
- 微博关注/QQ信息发送
<!doctype html> <html lang="en" xmlns:wb=“http://open.weibo.com/wb”> <head& ...
- C#基础-关于用json给控制台程序传值的坑
上周遇到了一个非常诡异的坑,首先写了两个程序,第一个程序输出成dll,第二个程序是控制台程序. 在第一个程序里,我使用了process去启动第二个程序,同时传入了一个Json作为参数,即: Proce ...
- httpCookie与Cookie安全
Web 应用程序使用的 Cookie 个人认为这里设置的cookie与访问cookie的安全性关联大一点,配置节如下 <httpCookies domain="String" ...