美文网首页
iOS CoreGraphics Quartz 2D

iOS CoreGraphics Quartz 2D

作者: 转身是天涯 | 来源:发表于2018-08-30 23:36 被阅读0次

        当一个视图View显示在屏幕上时,其展现给用户的样式都是经过绘 图后显示在屏幕上的。例如,UILabel控件能够在控件所在矩形区域的中间/左侧/右侧显示文字,UIImageView可以显示一张图片,UIButton 可以显示图片+文字,这些控件最终展示的效果其实都是经过绘图后才 显示出来的,而绘图的过程可以由程序员自行控制,正因为此,我们可以去控制绘图的过程,从而可以使视图展示不同的效果。这需要我们去学习CoreGraphics框架。

        CoreGraphics中最关键的部分是一个名为Quartz 2D的API集合,它包含了各种函数、数据类型以及对象,能够让大家在内存中直接绘制视图和图像。

        在使用CoreGraphics框架时,需要提前了解在绘图过程中涉及的几个重要概念:

画纸(page):Quartz 2D将正在进行绘制的视图视作一个虚拟的画布,在画布上用画笔画画,就必须遵循一定的规则,例如,绘制的内容是有先后顺序的,如下图所示。

绘制顺序

路径(Path):当你拿到一只画笔时,那么就能够随心所欲的在画纸上绘画,画笔移动的轨迹就是路径。在UIKit框架中,有一个 称为贝塞尔路径(UIBezierPath)的类专门用来设置各种样式的路径对象。

绘图上下文(Graphics Context):绘图上下文,有时也称为绘图环境 ,绘图上下文中会保存绘图的信息和状态,并负责将图形绘制在视图上,即绘图的输出终端(Drawing Destination),Quartz提供了5种绘图的输出目标,如下图所示。例如,可以输出到窗口屏幕window,也可以输出到打印机printer,也可以保存为文件PDF等。我们在开发中最经常使用的是layer。

绘图输出目标

        Quartz坐标变换: 不同的绘图系统对坐标系的定义有所区别.在iOS中Quartz坐标系和UIKi

t坐标系有所不同, 具体来说:

Quartz 2D坐标系: 原点在左下角, x向右为正, y向上为正;UIKit坐标系: 原点在左上角, x向右为正, y向下为正;

• 平移变换

        平移是一物体从一个位置到另一个位置所做的直线移动. 如果要把一 个位于P(x,y)的点移到新位置p’(x’,y’)时, 只要在原坐标加上平移距离T x及Ty即可.

• 缩放变换

        用来改变一物体大小的变换称为缩放变换. 如果要对一个多边形进行 比例变换, 那么可把各顶点的坐标(x,y)均乘以比例因子Sx、Sy可以相 等或不等. 如果比例因子数值小于1, 则物体尺寸减小; 大于1, 则使物体 放大; Sx及Sy都等于1,则物体大小形状不变.

• 旋转变换

        物体上的各点绕一固定点沿圆周路径转动称为旋转变换. 可以用旋转 角表示旋转量的大小. 一个点由位置(x,y)旋转到(x’,y’), 从水平轴到(x’,y’)的角度即为旋转角.

• 反射变换

        反射是用来产生物体的镜像的一种变换. 物体的镜像一般是相对于一 个对称轴产生的, 因此反射变换可以分为x轴对称变换、y轴对称变换 和坐标原点的对称变换.

Swift Demo: Quartz Fun

示例

• 1.在QuartzFunView中创建随机颜色,定义颜色和形状的枚举

• 2.实现QuartzFunView的框架,定义相关属性。

• 3.之后再添加三个能够响应用户触摸时间的方法

用户手指首次触摸屏幕时调用。存储当前坐标,然后调用setNeedDisplay方法将视图标记为需要重新绘制的。

用户手指持续拖动时持续调用。每次都在lastTouchLocation中存储最新的当前位置。

用户手指离开屏幕时调用。在lastTouchLocation变量中存储最终的位置并将视图标记为需要重新绘制。

• 4.向VIewController中添加输出接口和操作方法

• 5.添加绘制代码 获得上下文与当前绘制范围

相关文章

  • iOS绘图引擎之Quartz 2D第一篇

    iOS中CoreGraphics框架是一个二维的绘制引擎,通常被称作Quartz 2D,Quartz 2D可以与其...

  • Core Graphics

    iOS框架 Core Graphics 定义 CoreGraphics也称为Quartz 2D 是UIKit下的主...

  • CoreGraphics简单使用

    CoreGraphics也称为Quartz 2D是UIKit里边画图的. IOS常见图形绘制: 划线 画圆,弧,贝...

  • Quartz 2D绘图(CoreGraphics)

    Quartz 2D绘图(CoreGraphics) 1. Quartz概述 Quartz是Mac OS X的Dar...

  • CoreGraphics(Quartz 2D) | 基础概念篇:

    CoreGraphics是"艺名",学名是Quartz 2D,是二维图形绘制引擎,支持 iOS 和 OS X。 Q...

  • Quartz 2D

    Quartz 2D是一个二维绘图引擎。Quartz 2D的API是C语言,来自于CoreGraphics框架。没有...

  • iOS CoreGraphics Quartz 2D

    当一个视图View显示在屏幕上时,其展现给用户的样式都是经过绘 图后显示在屏幕上的。例如,UILabel控件能够在...

  • Quartz2D—简单介绍(1)

    CoreGraphics—Quartz2D简单介绍 一、什么是Quartz2D Quartz 2D是一个二维绘图引...

  • Quartz 2D

    Quartz 2D简介 Quartz 2D是一个二维绘图引擎,同时支持iOS和Mac系统 Quartz 2D能完成...

  • Quartz 2D 绘图技术

    Quartz 2D。是 iOS 和 Mac OS X 环境下的2D绘图引擎。Quartz 2D 也被称为 Core...

网友评论

      本文标题:iOS CoreGraphics Quartz 2D

      本文链接:https://www.haomeiwen.com/subject/eeysixtx.html