quartz2D 学习 1
来源:互联网 发布:阿里云虚拟主机能干嘛 编辑:程序博客网 时间:2024/06/15 05:11
Quartz2D的绘图总是发生在图形环境(Graphics Context)中。视图会在调用drawRect:方法进行绘图之前,创建好图形环境,
通过UIGraphicsGetCurrentContext函数来获得这个图形环,如果直接在图像或者PDF上绘图,需要调用CGBitmapContextCreate或者CGPDFContextCreate函数来创建图形环境。
Graphics Context是一个数据类型(CGContextRef),用于封装Quartz绘制图像到输出设备的信息。Quartz中所有的对象都是绘制到一个Graphics Context中。我们可以将Graphics Context想像成绘制目标。Graphics Context定义了基本的绘制属性,如颜色、裁减区域、线条宽度和样式信息、字体信息、混合模式等。除了 Graphics Context 之外,Quartz 2D API还定义一些数据类型。由于这些API就Core Graphics框架的一部分,所以这些数据类型都是以CG开头的。
Graphics Context包含一个绘图状态栈。当Quartz创建一个Graphics Context时,栈为空。当保存图形状态时,Quartz将当前图形状态的一个副本压入栈中。当还原图形状态时,Quartz将栈顶的图形状态出栈。出栈的状态成为当前图形状态。可使用函数CGContextSaveGState来保存图形状态,CGContextRestoreGState来还原图形状态。
常见的英语术语:
Current transformation matrix (CTM):当前转换矩阵
CTM是一种特殊类型的矩阵(affine transform,仿射矩阵),通过平移(translation)、旋转(rotation)、缩放(scale)操作将点从一个坐标空间映射到另外一个坐标空间。
Accuracy of curve estimation (flatness):曲线平滑度
内存管理:对象所有权
Quartz使用Core Foundation内存管理模型(引用计数)。所以,对象的创建与销毁与通常的方式是一样的。在Quartz中,需要记住如下一些规则:
- 如果创建或拷贝一个对象,你将拥有它,因此你必须释放它。通常,如果使用含有”Create”或“Copy”单词的函数获取一个对象,当使用完后必须释放,否则将导致内存泄露。
- 如果使用不含有”Create”或“Copy”单词的函数获取一个对象,你将不会拥有对象的引用,不需要释放它。
- 如果你不拥有一个对象而打算保持它,则必须retain它并且在不需要时release掉。可以使用Quartz 2D的函数来指定retain和release一个对象。例如,如果创建了一个CGColorspace对象,则使用函数CGColorSpaceRetain和CGColorSpaceRelease来retain和release对象。同样,可以使用Core Foundation的CFRetain和CFRelease,但是注意不能传递NULL值给这些函数。
当前的绘图环境创建一个Graphics Context。我们可以通过调用UIGraphicsGetCurrentContext函数来获取这个Graphics Context。
在绘制路径后,将清空图形上下文。我们也许想保留路径,特别是在绘制复杂场景时,我们需要反复使用。基于此,Quartz提供了两个数据类型来创建可复用路径—CGPathRef和CGMutablePathRef。我们可以调用函数CGPathCreateMutable来创建可变的CGPath对象,并可向该对象添加直线、弧、曲线和矩形
- quartz2D 学习 1
- Quartz2D(1)
- Quartz2D(1)
- quartz2D 学习 2
- IOS学习之Quartz2D
- Quartz2D 画图学习
- Quartz2D学习笔记
- Quartz2D学习笔记
- Quartz2D 学习札记
- Quartz2D学习笔记
- iOS学习笔记--Quartz2D
- iOS学习 - Quartz2D绘图学习
- IOS Quartz2D 学习一 手写板
- iOS 学习笔记 Quartz2D绘图
- [Quartz2D-1]-绘图
- quartz2d
- Quartz2d
- Quartz2D
- HDU4267(2012长春网络赛)
- Python中PyQuery库的使用总结
- Java文件file操作总结
- 两种方式使用tabhost/tabwidget布局
- 通俗感性多线程学习
- quartz2D 学习 1
- C++矩阵处理工具——Eigen .
- 代码实现电话的拨打
- 掀起C++ 11的神秘面纱(1)
- 用指针输出数组
- 《请给我结果 》 姜汝祥 著
- android listview局部刷新和模拟应用下载
- 剑指offer 调整数组的顺序使奇数位于偶数前面
- ddns client