1、drawRect方法

 //1.证明drawRect方法是在viewDidLoad后自动调用的,方便处理View的相关属性
// YQView * view = [[YQView alloc] initWithFrame:self.view.bounds];
//
// [self.view addSubview:view]; //2.init证明如果在初始化的时候没有设置rect的大小,将导致drawRect不能被自动调用
// YQView * view = [[YQView alloc] init];
//
// [self.view addSubview:view]; //3.手动调用drawRect
self.customView = [[YQView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:self.customView]; self.customView.iconImage = [UIImage imageNamed:@"1.jpg"]; //调用这个方法会出错,不能手动调用,系统不允许直接调用
// [self.customView drawRect:self.view.bounds]; //当需要手动调用drawRect方法的时候,实际上就是通知父类重新绘图
//setNeedsDisplay会异步自动调用drawRect方法
[self.customView setNeedsDisplay];

2、绘制线段、三角形、矩形、(椭)圆形、扇形

//1.画一条线段
- (void)drawLine:(CGContextRef)contextRef
{
//先给一个起点
CGContextMoveToPoint(contextRef, , );
//再给一个终点
CGContextAddLineToPoint(contextRef, , ); //设置线的状态
//线宽
CGContextSetLineWidth(contextRef, ); //颜色
// CGContextSetRGBStrokeColor(contextRef, 0.4, 0.44, 0.99, 1.0); CGContextSetStrokeColorWithColor(contextRef, [UIColor redColor].CGColor); //风格设置
// CGContextSetLineCap(contextRef, kCGLineCapRound); CGFloat lengths[] = {, , }; /**
* 绘制虚线
*
* @param c#> 作用域 description#>
* @param phase#> 起点的左移量 description#>
* @param lengths#> 实线和虚线的长度 description#>
* @param count#> 实线和虚线的循环个数(count必须等于lengths数组的长度) description#>
*
* @return nil
*/
CGContextSetLineDash(contextRef, , lengths, ); //将图形绘制到view上面来(渲染)
CGContextStrokePath(contextRef); }
//2.画三角形
- (void)drawTriangle:(CGContextRef)contextRef
{
CGContextMoveToPoint(contextRef, , ); CGContextAddLineToPoint(contextRef, , ); //如果连续添加多条线,它会把上一条线的终点作为下一条线的起点(即折线)
CGContextAddLineToPoint(contextRef, , ); //连接起点和终点(封起来)
CGContextClosePath(contextRef); // CGContextAddLineToPoint(contextRef, 0, 0); //线宽
CGContextSetLineWidth(contextRef, ); //线的风格(拐角的风格)
CGContextSetLineJoin(contextRef, kCGLineJoinRound); //
CGContextSetStrokeColorWithColor(contextRef, [UIColor redColor].CGColor); //绘制边框内容
// CGContextStrokePath(contextRef); //设置填充色
CGContextSetFillColorWithColor(contextRef, [UIColor grayColor].CGColor); //绘制实心内容
CGContextFillPath(contextRef); }
//3.画矩形
- (void)drawRectangle:(CGContextRef)contextRef
{
CGContextAddRect(contextRef, CGRectMake(, , , )); CGContextSetStrokeColorWithColor(contextRef, [UIColor yellowColor].CGColor); CGContextSetLineWidth(contextRef, ); //空心的(画线轨迹)
// CGContextStrokePath(contextRef); CGContextSetFillColorWithColor(contextRef, [UIColor greenColor].CGColor); //实心的
// CGContextFillPath(contextRef); //同时显示线框和填充
CGContextDrawPath(contextRef, kCGPathFillStroke); //以上三种渲染方式,只能使用一种,如果都写,只执行最先写的那个 }
//4.画圆(椭圆)
- (void)drawCircle:(CGContextRef)contextRef
{
CGContextAddEllipseInRect(contextRef, CGRectMake(, , , )); CGContextFillPath(contextRef); }
//5.扇形
- (void)drawArc:(CGContextRef)contextRef
{
// CGContextMoveToPoint(contextRef, 100, 100); /**
* 画扇形
*
* @param contextRef 作用域
* @param x#> 原点x值(圆心) description#>
* @param y#> 原点y值(圆心) description#>
* @param radius#> 半径 description#>
* @param startAngle#> 开始的角度 description#>
* @param endAngle#> 结束的角度 description#>
* @param clockwise#> 方向(默认0顺时针) description#>
*
* @return nil
*/
// CGContextAddArc(contextRef, 100, 100, 50, 0, M_PI_2, 0);
//
// CGContextAddLineToPoint(contextRef, 100, 100);
//
// CGContextStrokePath(contextRef); CGContextFillPath(contextRef);
//
//1.第一部分
CGContextMoveToPoint(contextRef, , ); CGContextAddArc(contextRef, , , , , * M_PI / , ); CGContextSetFillColorWithColor(contextRef, [UIColor cyanColor].CGColor); CGContextFillPath(contextRef); //2.第二部分
CGContextMoveToPoint(contextRef, , ); CGContextAddArc(contextRef, , , , , * M_PI / , ); CGContextSetFillColorWithColor(contextRef, [UIColor magentaColor].CGColor); CGContextFillPath(contextRef); CGContextMoveToPoint(contextRef, , ); CGContextAddArc(contextRef, , , , * M_PI / , * M_PI / , ); CGContextSetFillColorWithColor(contextRef, [UIColor yellowColor].CGColor); CGContextFillPath(contextRef);
}

Quartz2D学习笔记的更多相关文章

  1. Quartz2D学习笔记(1)

    ********************************** 简介 *************************************** Quartz2D是⼀个二维绘图引擎,同时支持 ...

  2. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  3. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  4. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  5. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  6. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  7. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  8. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  9. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

随机推荐

  1. SNF开发平台WinForm之十二-发送手机短信功能调用-金笛-SNF快速开发平台3.3-Spring.Net.Framework

    1.调用前组装参数 2.调用发送信息服务脚本   .调用前组装参数: BaseSendTaskEntity entity = new BaseSendTaskEntity(); entity.Mess ...

  2. ruby -- 基础学习(五)empty、nil、blank三者之间的区别

    这三个方法在ROR中经常用到,都是用来判断是否为空的. 区别是: ruby的方法:.nil?..empty? rails的方法 :.blank? 用法的区别: .nil?    :   判断对象是否存 ...

  3. Android之TextView的Span样式源码剖析

           Android中的TextView是个显示文字的的UI类,在现实中的需求中,文字有各式各样的样式,TextView本身没有属性去设置实现,我们可以通过Android提供的 Spannab ...

  4. Android 布局之GridLayout

    Android 布局之GridLayout 1 GridLayout简介 GridLayout是Android4.0新提供的网格矩阵形式的布局控件. GridLayout的继承关系如下:java.la ...

  5. iframe无刷新跨域上传文件并获取返回值

    通常我们会有一个统一的上传接口,这个接口会被其他的服务调用.如果出现不同域,还需要无刷新上传文件,并且获取返回值,这就有点麻烦了.比如,新浪微博启用了新域名www.weibo.com,但接口还是使用原 ...

  6. debian之samba服务器搭建

    安装过程非常简单: apt-get install samba sudo vim /etc/sama/smb.conf [pengdl] comment = pengdl's samba path = ...

  7. LeetCode——Find Median from Data Stream

    Median is the middle value in an ordered integer list. If the size of the list is even, there is no ...

  8. GitLab安装说明

    GitLab,是一个使用 Ruby on Rails 开发的开源应用程序,与Github类似,能够浏览源代码,管理缺陷和注释,非常适合在团队内部使用. gitlab是基于Ruby on Rails的, ...

  9. 用cryptico.js实现RSA加密(应对cryptico不支持PEM)

    问题: 随手分享一下好了,这个问题困扰了很久. cryptico.js这个加密算法库很全,很适合在前端用到各种加密解密算法的需求.但是美中不足的是,它的RSA加密不支持PEM格式,所以如果你后端用ja ...

  10. 【rational rose】用例图