经常看点

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学习(一)的更多相关文章

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

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

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

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

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

    (四)内主要讲了绘制状态的保存与恢复 本次主要讲述 缩放,旋转,平移等操作 5.附加操作 5.1 旋转 TIP: 旋转操作主要是对本次渲染的图层进行旋转,旋转的中心为左上角顶点 - (void)dra ...

  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. iOS学习——Quartz2D学习之UIKit绘制

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

  8. iOS学习——Quartz2D学习之DrawRect

    Quartz2D学习之DrawRect 本文以问答形式主要讲述Quartz2D的相关内容,参考内容是网上下载的学习视频资料. 1.什么是Quartz2D? 他是一个二维的绘图引擎,同时支持iOS和Ma ...

  9. 开通博客第一天,记录此时此刻,开始学习加强c#

    从2017年6月毕业到现在,不断的学习.net,在工作中不断的加强技术,终于在此时此刻决定开通博客,记录此后每一天学习的技术点,两年来,每天所涉及的技术点很杂,学了这个忘了那个,总感觉在进步却总是觉得 ...

随机推荐

  1. Windows 搭建 .NET 跨平台环境并运行应用程序

    写在前面 阅读目录: Install .NET Version Manager (DNVM) Install .NET Core Execution Environment (DNX) Write t ...

  2. 【记录】AutoMapper Project To not support ResolveUsing

    示例代码: public List<OrderLineDTO> GetLinesForOrder(int orderId) { Mapper.CreateMap<OrderLine, ...

  3. Git代码管理工具

    Git代码管理工具 Git 是分布式的源代码管理工具,这点区别于svn -让源代码可以被追溯,主要是记录了每次的更新了什么,如果新版本不想用,那么则可以退回之前的版本 -Git 是Linux之父当年为 ...

  4. 如何获取byte的各个bit值以及常见位操作

    项目中通过信号采集板的数据获取车上仪表盘指示灯的信息,将接收到的数据转成byte后,还要将每一个Byte的各个Bit值分离出来,这样才知道每个bit的值代表的具体信息.这里记录下如何获取byte的各个 ...

  5. 1Z0-053 争议题目解析685

    1Z0-053 争议题目解析685 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 685.In your test database: -You are using Recover ...

  6. DotNet处理服务器路径的方法

    项目中需要使用到路径处理的地方比较多,对于路径的解析和匹配有时较为繁琐,现在提供一个对路径进行解析的方法: 1.验证设置路径字符串: /// <summary> /// 验证设置路径字符串 ...

  7. 在 .NET 中远程请求 https 内容时,发生错误:根据验证过程,远程证书无效。

    当访问 https 内容的时候,有时候经常会看到证书错误(不在操作系统的证书信任链中?)的提示,在浏览器中我们可以忽略错误的证书,继续访问网页内容. 但是在 .NET 程序中,需要由代码来判断是否忽略 ...

  8. 利用SHELL脚本实现文件完整性检测程序(1.2版更新)

    一..开发背景 因时势所逼,需要对服务器的文件系统实行监控.虽然linux下有不少入侵检测和防窜改系统,但都比较麻烦,用起来也不是很称手.自己琢磨着也不需要什么多复杂的功能,写个脚本应该就可以满足基本 ...

  9. 背水一战 Windows 10 (12) - 绘图: Shape, Path

    [源码下载] 背水一战 Windows 10 (12) - 绘图: Shape, Path 作者:webabcd 介绍背水一战 Windows 10 之 绘图 Shape - 图形 Path - 路径 ...

  10. SpringMVC基本使用

    springMVC是一个MVC框架,他控制着请求相应的整个流程,从请求一进入到应用服务器到相应离开,都离不开mvc框架 请求在应用服务器中 先说说请求相应在应用服务器的整个过程 DisptacherS ...