本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书
 
Quartz2D须知:

 
(1)Quartz 2D是苹果官方的二维绘图引擎,同时支持iOS和Mac OS X系统(跨平台,纯 C 语言的)
(2)Quartz2D的API是纯C语言的
(3)Quartz2D的API来自于Core Graphics框架        
(4)数据类型和函数基本都以CG作为前缀
  • CGContextRef —— 图形上下文(相当于一个草稿纸)
  • CGPathRef  ——— 图形路径
  • CGContextStrokePath(cox);   ——— 渲染
 

 
 
Quartz2D api常用拼接路径函数:

 
//新建一个起点
void CGContextMoveToPoint(CGContextRef c, CGFloat x, CGFloat y);
//添加新的线段到某个点
void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y);
//添加一个矩形
void CGContextAddRect(CGContextRef c, CGRect rect);
//添加一个椭圆
void CGContextAddEllipseInRect(CGContextRef context, CGRect rect);
//添加一个圆弧
void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius,
                     CGFloat startAngle, CGFloat endAngle, int clockwise);
 
 
 
 
Quartz 2D能完成的工作:

(1) 绘制图形 : 线条/三角形/矩形/圆/弧等
(2) 绘制文字:涂鸦/画板
(3) 绘制图片/生成图片(图像)
(4) 读取PDF/生成PDF
(5) 截图/裁剪图片
(6) 手势解锁
(7) 报表:折线图/饼状图/柱状图 (查看 gif 动画图片)
(8) 自定义UI控件(或者叫: 自定义 view)
 
通过 Quartz2D绘制自己的控件 , 通过继承自 UIView,重写 drawRect:方法实现在控件上绘制各种内容
 
举例:
通过继承自 UIView 实现自定义的 UIImageView
实现自定义的“下载进度条”控件
幸运转盘控件
……
 
注意:
  • Cocos2D(Cocos2D-x、Cocos2D-iPhone、Cocos2D-HTML5等), 是一个第三方开源的2D游戏框架
  • 做2D 游戏的 还有 Sprite Kit。 一般3D 游戏用 unity3D。
 
 
 
Quartz2D在iOS开发中的价值:

 
为了便于搭建美观的UI界面,iOS提供了UIKit框架,里面有各种各样的UI控件
UILabel:显示文字
UIImageView:显示图片
UIButton:同时显示图片和文字(能点击)
… …
 
利用UIKit框架提供的控件,拼拼凑凑,能搭建和现实一些简单、常见的UI界面
 
但是,有些UI界面极其复杂、而且比较个性化,用普通的UI控件无法实现,这时可以利用Quartz2D技术将控件内部的结构画出来,自定义控件的样子
 
其实,iOS中大部分控件的内容都是通过Quartz2D画出来的
 
因此,Quartz2D在iOS开发中很重要的一个价值是:自定义view(自定义UI控件)
 
 


如有疑问,请发送邮件至 shorfng@126.com 联系我。
 
By:蓝田(Loto)
 

1.0 Quartz 2D 简介的更多相关文章

  1. iOS - Quartz 2D 二维绘图

    1.Quartz 2D 简介 Quartz 2D 属于 Core Graphics(所以大多数相关方法的都是以 CG 开头),是 iOS/Mac OSX 提供的在内核之上的强大的 2D 绘图引擎,并且 ...

  2. Quartz 2D在ios中的使用简述一:坐标体系

    Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境,官方文档:Quartz 2D Programming Guide. 一.坐标体系 这样的坐标体系就导致我们使用Quart ...

  3. Quartz 2D绘制简单图形

    在Quartz 2D中,绘图是通过图形上下文进行绘制的,以下绘制几个简单的图形 首先先创建一个QuartzView.swift文件继承自UIView,然后实现drawRect方法: import UI ...

  4. Quartz 2d绘图

    今天看了一下Quartz 2D绘图,我只想说:不要把绘图和动画那些东西当做一个很复杂的东西,其实只要你认真看还是可以理解的.他们并不难.啰嗦了几句,现在直接进入正题: 前提是我们必须新建一个singl ...

  5. Quartz 2D 图形上下文栈 矩阵 裁剪

    Quartz 2D 图形上下文栈  矩阵 // // DJVIew.m // 图形上下文栈 // // Created by zjj on 15/6/30. // Copyright (c) 2015 ...

  6. iOS 2D绘图详解(Quartz 2D)之阴影和渐变(Shadow,Gradient)

    前言:这个系列写道这里已经是第五篇了,本文会介绍下阴影和渐变的基础知识,以及一些基本的Demo Code展示,应该还会有两篇,介绍下Bitmap绘制以及Pattern等知识. Shadow shado ...

  7. iOS开发——图层OC篇&Quartz 2D各种绘制实例

    Quartz 2D各种绘制实例 首先说一下,本篇文章只是介绍怎么使用Quartz 2D绘制一些常用的图像效果,关于Quartz和其他相关技术请查看笔者之前写的完整版(Quartz 2D详解) 一:画线 ...

  8. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  9. iOS 2D绘图详解(Quartz 2D)之概述

    前言:最近在研究自定义控件,由于想要彻底的定制控件的视图还是要继承UIView,虽然对CALayer及其子类很熟练,但是对Quartz 2D这个强大的框架仍然概念模棱两可.于是,决定学习下,暂定7篇文 ...

随机推荐

  1. Java编程思想重点笔记(Java开发必看)

    Java编程思想重点笔记(Java开发必看)   Java编程思想,Java学习必读经典,不管是初学者还是大牛都值得一读,这里总结书中的重点知识,这些知识不仅经常出现在各大知名公司的笔试面试过程中,而 ...

  2. ASP.NET中使用JqGrid完整实现

    文章提纲 介绍 & 使用场景 JqGrid的一些说明 JqGrid和ASP.NET整合详细步骤 前置准备 框架搭建 数据填充 数据增/删/改 其他 介绍&使用场景 JqGrid不是一个 ...

  3. php无限分类

    无限循环 1.需要套2个foreach 2.2个foreach结构一样 纯代码获取数据 ){ $where['parent_id']= $parent_id; $res = $this->m-& ...

  4. Nancy总结(三)Nancy资料介绍

    Nancy 是一个轻量级用于构建基于 HTTP 的 Web 服务,可以基于 .NET 和 Mono 平台构建轻量级基于 HTTP 的Web 服务.它更多的是借鉴了Ruby的一些特性和Ruby的MVC ...

  5. ThinkPHP配置简单的mysql读写分离

    ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型. 配置DB_DEPLOY_TYPE 为1 可以采用分布式数据库支持.如果采用分布式数据库, ...

  6. SQL Server基础知识

    1.SQL Server表名为什么要加方括号? 这个不是必须要加,但表名或字段名如果引用了sqlserver中的关键字,数据库会不识别这到底是关键字还是表名(或字段名)时就必须要加. 比如,一个表名叫 ...

  7. C/C++的开发环境安装

    sudo apt-get install gcc sudo apt-get install g++ sudo apt-get install cmake sudo apt-get install ma ...

  8. mysql的DISABLE/ENABLE KEYS

    有一个表 tbl1 的结构如下: CREATE TABLE `tbl1` ( `id` int(10) unsigned NOT NULL auto_increment, `name` char(20 ...

  9. 从零开始学jQuery插件开发

    http://www.w3cfuns.com/notes/19462/ec18ab496b4c992c437977575b12736c.html jQuery 最成功的地方,是它的可扩展性,通过吸引了 ...

  10. liunx中计算机壳层

    什么是shell?shell是用C语言编写的程序.既是一种命令语言,又是一种程序设计语言.shell是一种应用程序,这个应用程序提供一个界面,用户通过这个界面访问系统内核的服务.在计算机科学中,She ...