本文并非最终版本,如有更新或更正会第一时间置顶,联系方式详见文末
如果觉得本文内容过长,请前往本人 “简书
 
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. marquee标签,好神奇啊...

    <html><body><div style="height:190; margin-top:10; margin-bottom:10; width:96%; ...

  2. coredump简介与coredump原因总结

    from:http://www.cnblogs.com/doctorqbw/archive/2011/12/21/2295962.html   千兵卫博士   coredump简介与coredump原 ...

  3. PHP利用P3P实现跨域

    本文转自:点这里 有别于JS跨域.IFRAME跨域等的常用处理办法,还可以利用P3P来实现跨域. P3P是什么 P3P(Platform for Privacy Preferences)是W3C公布的 ...

  4. tyvj1089 smrtfun

    背景 广东汕头聿怀初中 Train#2 Problem3 描述  现有N个物品,第i个物品有两个属性A_i和B_i.在其中选取若干个物品,使得sum{A_i + B_i}最大,同时sum{A_i},s ...

  5. (PPT)Linux服务器基础

  6. C和指针 第十章 结构和联合 (一)

    结构体: 聚合数据类型是指,能够同时存储超过一个的单独数据,C语言中有两个聚合数据类型,数组和结构体.数组中储存的类型必须相同,元素通过下标和指针引用来访问的. 结构体也是一些值的集合,但是结构体中每 ...

  7. and or bool and a or b 原理解释

    python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值. or也是从左到有计算表达式,返回第一个为真的值. 代码如下: IDLE 1.2.4>&g ...

  8. R-FCN、SSD、YOLO2、faster-rcnn和labelImg实验笔记(转)

    https://ask.julyedu.com/question/7490 labelImg:https://github.com/tzutalin/labelImg

  9. python的os模块

    1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd() 2.返回指定目录下的所有文件和目录名:os.listdir() 3.函数用来删除一个文件:os.remove() ...

  10. 【Maven】Eclipse安装Maven插件后导致Eclipse启动出错

    本文纯属复制粘贴:具体请参照原文: Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning.  解决方法: 1. ...