Quartz2D学习笔记(1)
********************************** 简介 ***************************************
Quartz2D是⼀个二维绘图引擎,同时支持iOS和Mac系统。
Quartz2D能完成的工作:
绘制图形 : 线条\三角形\矩形\圆\弧等
绘制文字
绘制\生成图片(图像)
读取\生成PDF
截图\裁剪图片
自定义UI控件:事实上iOS中⼤部分控件的内容都是通过Quartz2D画出来的。
****************************** 常用属性及函数 ***********************************
CGContextRef GraphicsContext
作用:
保存绘图信息,绘图状态
决定绘制的输出目标(比如输出到PDF,显示器的窗口,打印机)

如何利用Quartz2D绘图到view上?
1. 首先要有Graphics Context,它保存绘图信息,并且决定将图绘制到什么地方。
2. Graphics Context要与view相关联,才能将内容绘制到view上。
执行步骤
1. 建立一个继承UIView的类
2. 实现 -(void) drawRect:(CGRect)rect 方法(此方法才能得到与view相关的GraphicsContext):
1)取得跟当前view相关联的GraphicsContext
2)绘制图形
3)利用GraphicsCotext将绘制内容渲染显示到view上
Quartz2D的API来自于 Core Graphics 框架,是纯C语言的,因此Quartz2D的API基本都以CG为前缀。
view内部有个layer属性,view之所以能显示东西,是因为layer,所以drawRect:取得的其实是Layer Graphics Context。
******************************* 实现简单绘图 *********************************
画直线
// drawRect:方法在自定义view第一次显示在屏幕上或者view内容需要更新时就会被调用
-(void)drawRect:(CGRect) rect{
CGContextRef ctxt = UIGraphicsGetCurrentContext;
/* 在drawRect:里调用UIGraphicsGetCurrentContext方法获得的就是view的Graphics Context */
// 绘制一条直线
CGContextMoveToPoint(ctxt, , ); // 设置起点
CGContextAddLineToPoint(ctxt,,); // 设置终点
CGContextSetRGBStrokeColor(ctxt, , , 1.0); // 设置线条颜色
// 设置颜色也可以用: [[UIColor GreenColor] set];
CGContextSetLineWidth(ctxt, ); // 设置线条宽度
CGContextStrokePath(ctxt); // 渲染出一条空心的线
/* 渲染为实心:CGContextStrokePath(CGContextRef Context)
线条不能渲染成实心的 */ /* [[UIColor purpleColor] setFill] 同时设置实心和颜色*/ */ [[UIColor blueColor] setStroke]; 同时设置空心和颜色*/
关于此段代码用到的表示颜色的函数:
void CGContextSetRGBStrokeColor ( CGContextRef c, CGFloat red, CGFloat green, CGFloat blue, CGFloat alpha );
类似的还有:
void CGContextAddLines ( , const CGPoint *points, size_t count ); // 传入一个由点组成的数组 CGContextRef c
void CGContextAddCurveToPoint ( , CGContextRef cCGPoint cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, x, CGFloat y ); // 如下图CGFloat
两个ControlPoint,两个endPoint
void CGContextAddQuadCurveToPoint ( c, CGFloat cpx, CGFloat cpy, CGContextRefCGFloat x, CGFloat y ); // 如下图
一个ControlPoint,一个endPoint
// 绘制三角形
-(void)drawRect:(CGRect)rect{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextMoveToPoint(context, , );
CGContextMoveToPoint(context, , );
CGContextAddLineToPoint(context, , );
CGContextClosePath(context); /* 要得到一个封闭图形,就要用CGContextClosePath方法,此方法将起点和终点连接起来 */
CGContextStrokePath(context); // 渲染图形到layer上显示
}
Quartz2D学习笔记(1)的更多相关文章
- Quartz2D学习笔记
1.drawRect方法 //1.证明drawRect方法是在viewDidLoad后自动调用的,方便处理View的相关属性 // YQView * view = [[YQView alloc] in ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- 2014年暑假c#学习笔记目录
2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
随机推荐
- 分布式助手Zookeeper(一)
分布式助手Zookeeper(一)博客分类: Zookeeper Zookeeper最早是Hadoop的一个子项目,主要为Hadoop生态系统中一些列组件提供统一的分布式协作服务,在2010年10 ...
- [ES6] 23. Rest Parameters & Spread Parameters
Rest Parameters: In ES5, when you don't know how many paramters will be passed in, you can use argum ...
- Linux 释放cached内存
使用free -m 查看系统使用的内存情况: # free -m total used free shared buffers ...
- 安装tensorflow
官网:http://tensorflow.org/安装步骤:1.sudo apt-get install python-pip python-dev python-virtualenv 3 co ...
- spring mvc 3.1的自动注入参数遇到的问题
在网上下载了xheditor作为页面的编辑器,编辑内容后post到后台保存,后台方法用spring mvc的自动注入的方式接收参数. 这种方式在各个浏览器下运行良好,但是在ie11下发现,从word. ...
- poj 1007 DNA Sorting
DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 95437 Accepted: 38399 Des ...
- 【转】性能测试设计和LR原理的探讨
做了4个迭代的性能测试, 在没有需求的情况下步步艰辛,把代码和框架独立开发从0到一万多行代码的测试工具(脚本),作为性能测试工具佼佼者Lr,我时而拿他作参考,山寨了它很多 东西,同时带有很多疑问对它实 ...
- WPF-TxtBox控件利用KeyDown来控制键盘输入
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e) { TextBox txt = ...
- C#数据类型转换的几种形式
1.隐式转换:一般是低类型向高类型转化,能够保证值不发生变化. 隐式数值C#数据类型转换: 从 sbyte 到 short.int.long.float.double 或 decimal. 从 byt ...
- cognos 10.2.2 Framework manager使用”数据源”新建查询主题
又做了一个简单的报表,就是在Framework Manager中写个sum()的sql出个报表,可以使用使用"数据源"新建查询主题 配置查询主题后修改SQL,注意全部都是大写,要和 ...