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. cocos2d-x开发: 场景实体(entity)管理

    公司现在开新项目,主题的框架部分都是我自己在做,不用受到别人的牵制,所以还算是比较的自由,很好发挥. 游戏并不大,所以需要用到的地方并不多.今天花了一些时间写了场景entity管理的部分代码,还没有完 ...

  2. 导出excel和PDF小结 vba

    最近接触了一个关于Access工具的项目,所以整理下需要使用的方法. 功能要求简介: 1.将数据表中的数据导出到excel和PDF 2.并根据某个字段名称分sheet输出. 3.无模板方式 方案简介: ...

  3. ruby -- 进阶学习(十一)配置解决production环境下无法加载css或js

    最近配置production环境,找了好几份文档,从傻逼到苦逼~~终于配置成功~~@_@!!! 首先,先加载以下几个插件: # Use Uglifier as compressor for JavaS ...

  4. Javascript起源...

    Javascript的设计思路是这样的: (1)借鉴C语言的基本语法: (2)借鉴Java语言的数据类型和内存管理: (3)借鉴Scheme语言,将函数提升到"第一等公民"(fir ...

  5. Android 学习笔记之AndBase框架学习(六) PullToRefrech 下拉刷新的实现

    PS:Struggle for a better future 学习内容: 1.PullToRefrech下拉刷新的实现...   不得不说AndBase这个开源框架确实是非常的强大..把大部分的东西 ...

  6. 谈Mysql索引

    myisam和innodb的索引有什么区别? 两个索引都是B+树索引,但是myisam的表存储和索引存储是分开的,索引存储中存放的是表的地址.而innodb表存储本身就是一个B+树,它是用主键来做B+ ...

  7. 用javascript去掉字符串空格的办法

    今天遇到了以关于JavaScript 中怎么去掉 字符串中前后两段的空格 ,我只好向就得js中也后Trim() 函数,后来试试了不 行,就网上找了下解决方法,其中用到了正则表达式 ,整理了下: < ...

  8. Azure开发者任务之一:解决Azure Storage Emulator初始化失败

    初学Windows Azure: 我打算开始学习Windows Azure.我安装了Azure SDK,然后在“Cloud”标签下选择Windows Azure模板,创建了一个项目,然后又创建了一个W ...

  9. WPF 程序自删除(自毁)|卸载程序删除

    一般是在MainWindow_Closed 事件中调用批处理命令删除. 在借鉴别人的想法的基础上的算是改进. 自删除步骤: 1.删除文件 2.删除存放文件夹. 实现代码: private static ...

  10. 【jQuery基础学习】07 jQuery表单插件-Form

    作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行刷新. 它的核心方法是ajaxForm()和ajaxSubmit() 升级表 ...