记录一次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,在工作中不断的加强技术,终于在此时此刻决定开通博客,记录此后每一天学习的技术点,两年来,每天所涉及的技术点很杂,学了这个忘了那个,总感觉在进步却总是觉得 ...
随机推荐
- 使用ikmv将jar转换为dll,在.NET中直接调用
ikmv百科介绍 ikvm官网 使用ikvm前需要先安装java. ikvm的使用比较简单,到官网下载ikvm需要的组件,解压后在path中配置 %IKVM_HOME%\bin 在cmd中使用命令 i ...
- 使用VS Code开发ASP.NET 5 应用程序
本文简要地翻译了 https://code.visualstudio.com/Docs/runtimes/ASPnet5 并结合我的实践做了一些说明. 准备工作 1.安装VS Code https: ...
- GROUP BY的扩展
GROUP BY的扩展主要包括ROLLUP,CUBE,GROUPING SETS三种形式. ROLLUP rollup相对于简单的分组合计增加了小计和合计,解释起来会比较抽象,下面我们来看看具体事例. ...
- Oracle数据库备份、恢复及常见问题
通常我们都是使用PL/SQL Developer来对Oracle中的数据对象和数据进行管理.如果我们想方便快速还原或者部署Oracle到新机器上,怎么进行数据库的备份.导入恢复呢? 这里我们必须要考虑 ...
- C++ this指针的用法
this指针的含义及其用法: 1. this指针是一个隐含于每一个成员函数中的特殊指针.它指向正在被该成员函数操作的那个对象.2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针, ...
- Rafy 领域实体框架 - 领域模型设计器(建模工具)设计方案
去年4月,我们为 Rafy 框架添加了领域模型设计器组件.时隔一年,谨以本文,简要说明该领域模型设计器的设计思想. 设计目标 Rafy 实体框架中以领域驱动设计作为指导思想.所以在开发时,以领域建模为 ...
- [Asp.net 5] Logging-其他日志系统的实现
Microsoft.Framework.Logging.NLog 使用Nlog扩展日志系统:按照我们上节说的,对于扩展的日志系统都要实现俩个接口ILogger.ILoggerProvider.所以在当 ...
- C#使用iTextSharp给PDF添加水印
代码: /// <summary> /// 添加普通偏转角度文字水印 /// </summary> public static void SetWatermark(string ...
- 关于如何显示Jianshu图片的方案
问题的提出 简书是一个很好的博客网站,很多朋友都在jianshu上进行创作.当然出于各种目的,我们可能想将简书的文章同步到其他网站. 这个时候你会发现所有的文章里面的图片都无法正常显示了. 原因 如果 ...
- WPF平台Grid控件性能比较
WPF官方发布第一个版本至今已经有10年了, 我们几乎在同时也开始了XAML开发.即使经过多年打造,我们依旧尝试提高:我们真的成功打造了高效灵活的控件吗?我没有在其他地方找到任何关于优秀的WPF表格性 ...