(第1章)小结 发表于 2017-01-13 本章介绍了iOS绘图的基础:上下文。您已经了解了如何创建上下文,知道了可用的不同上下文,并发现如何检索内容以用于生成图像和PDF文件。在iOS中,上下文提供了一系列细微差别的状态控制。在你读完本章之前,这里有几点要思考: 对于任何绘图要求,通常有许多解决方案可以让你得到相同的结果。你倾向于使用Co ... 阅读全文 »
1.14-设置画线的参数 发表于 2017-01-12 每个上下文都会存储线宽作为其图形状态的一部分。你可以通过调用CGContextSetLineWidth()并传递一个尺寸作为其参数来调整该线宽,后续绘制操作将沿袭该状态的更改。然而,该宽度不适用于UIKit的主绘图工具:UIBezierPath的实例。每个UIKit路径允许您通过设置其lineWid ... 阅读全文 »
1.13-变换 发表于 2017-01-11 图 1-13 中的字母序列是通过在圆周上的点的位置上绘制每个字符来构建的。这个图利用了UIKit的一些内置功能:NSString实例知道如何将自己绘制到上下文中。你只是告诉一个字符串在一个点或矩形中绘制,如下例所示: 1[@"Hello" drawAtPoint:CGPointMake(100, 5 ... 阅读全文 »
1.12-裁剪 发表于 2017-01-11 裁剪使您能够排除在上下文中路径外的任何绘制操作。要实现裁剪,你需要添加一个路径到你的上下文,然后调用CGContextClip()裁剪函数。图 1-12 显示了一个示例,其中绘制到上下文的彩色圆被裁剪到单词Hello的字母内。 图 1-12 随机彩色圆被裁剪到单词Hello的边界内。 清单 1-1 ... 阅读全文 »
1.11-上下文坐标系统 发表于 2017-01-11 当您主要使用UIKit进行绘图工作时,坐标系统是从屏幕的左上角开始(0,0),并向右和向下延伸。而在Quartz中,坐标系是从屏幕的左下角开始的。 如图1-11。它描绘了在UIKit(左)和Quartz(右)中绘制的正方形{20,20,40,40}。在每种情况下,对象都从原点开始偏离20个点。但是, ... 阅读全文 »
1.10-上下文状态 发表于 2017-01-11 在清单 1-8 中,set方法在颜色实例上调用时,指定了当前上下文中后续fill和stroke操作的颜色。在该列表中,首先设置紫色,然后设置绿色。 指定每种颜色后,它将应用于所有的后续绘制操作。 两种相关的方法指定了颜色是只用于fill(setFill)还是只用于stroke(setStroke)操 ... 阅读全文 »
1.9-画家模型 发表于 2017-01-10 iOS使用画家模型在上下文中绘制。除非另有指定,否则所有新的绘制操作都将添加到现有图形的顶部。这类似于画家将颜料物理地添加到画布上的方式。你可以通过覆盖新的绘图操作来修改上下文。 清单 1-8 演示了这个模型。它的代码构建了两个圆形贝塞尔曲线路径。 左边的一个绘制成紫色,然后绘制右边一个成绿色。结果 ... 阅读全文 »
1.8-UIKit和Quartz的颜色属性 发表于 2017-01-10 许多Core Foundation类具有UIKit等效项,反之亦然。通常这些是无损桥接的,这意味着Core Foundation风格的数据类型可以与UIKit版本互换使用。使用ARC桥接调用(__bridge)在Core Foundation风格版本和UIKit版本之间转换。 UIKit中的大多数绘 ... 阅读全文 »
1.7-使用UIKit上下文绘图 发表于 2017-01-10 UIKit简化了创建和管理上下文的任务。建立一个新的图像或PDF上下文只需要一行,另一行进行包装结束上下文。在这些行之间,您可以自由地执行任何绘图请求。这些都将被应用于当前的上下文。 清单 1-6 使用与清单 1-5 相同的绘图函数,并产生相同的图像结果。但是,这些更新不是绘制到自定义的Quartz ... 阅读全文 »
1.6-在上下文中绘图 发表于 2017-01-10 许多Quartz函数依赖于引用一个您可以绘制的上下文。例如,清单 1-5 中的函数调用。 这里设置了4像素的线宽,设置灰色,然后在矩形容器中画一个椭圆。每个函数调用都需要一个context参数,它必须是一个有效的CGContextRef类型。 您可以自己构建此上下文(如清单1-4 所示)或从UIKi ... 阅读全文 »