Quartz是一个绘图库,应用于平面空间的图形绘制。
他可以在iOS,Mac OS上使用。
基本思路:
- 采用的是“绘画者”模式。
- 在绘制的时候,把自己想象成一个画家,进行绘画。绘制的东西是抹不掉的,(除非你把特定矩形区域的图画抹掉,但是不能去掉特定的某一个画)我们可以通过在覆盖的方法把已经绘制的东西给遮挡住。
- 既然采用的是“绘画者”的模式,那么就需要一个画布,一个画笔。
- 画布:就是context
- layer context
- image context
- PDF context
- pinter
- window (Mac OS)
- 画笔:默认已经创建好
- 画布:就是context
- 在绘画的过程中,就需要调画笔,画布。这些调整就是current context state。我们采用栈的方式将这些设置进行保存,使用。调用CGContextSaveGState就将当前的state push到了栈中。用CGContextRestoreGState就将栈顶中的数据取出来使用。当作current context state。
- 我们可以改变的current context state有:
- 采用的是“绘画者”模式。
Parament | Attribute |
---|---|
Current transformation matrix (CTM) | transform |
Clipping area | rect |
Line: width, join, cap, dash, miter limit | point/float |
Accuracy of curve estimation (flatness) | float |
Anti-aliasing setting | bool |
Color: fill and stroke settings | color |
Alpha value (transparency) | float |
Rendering intent | color |
Color space: fill and stroke settings | color |
Text: font, font size, character spacing, text drawing mode | text(这个已经不常用了,可以之际使用CoreText或者TextKit) |
Blend mode | enum |
注意事项:
- Context的Clip,是先将context裁剪,然后在clip区域进行绘制,一定要注意这个顺序,要不然就会什么都不显示了。另外最好是先将context save一下,然后在进行裁剪和绘制。以便将来进行不裁剪的绘制。