Quartz提供了一个类似于操作图形上下文的CGPath的函数集合。这些路径函数操作CGPath对象,而不是图形上下文。这些函数包括:
- CGPathCreateMutable,取代CGContextBeginPath
- CGPathMoveToPoint,取代CGContextMoveToPoint
- CGPathAddLineToPoint,取代CGContexAddLineToPoint
- CGPathAddCurveToPoint,取代CGContexAddCurveToPoint
- CGPathAddEllipseInRect,取代CGContexAddEllipseInRect
- CGPathAddArc,取代CGContexAddArc
- CGPathAddRect,取代CGContexAddRect
- CGPathCloseSubpath,取代CGContexClosePath
如果想要添加一个路径到图形上下文,可以调用CGContextAddPath。路径将保留在图形上下文中,直到Quartz绘制它。我们可以调用CGContextAddPath再次添加路径。
Linedash pattern(虚线模式)允许我们沿着描边绘制虚线。我们通过在CGContextSetLineDash结构体中指定虚线数组和虚线相位来控制虚线的大小及位置。
CGContextSetLineDash结构如下:
|
路径描边的函数
Quartz提供了表3-4中的函数来描边当前路径。其中一些是描边矩形及椭圆的便捷函数。
表3-4 描边路径函数
绘制当前路径的几个常见属性的方法:
1.line width CGContextSetLineWidth
1.line join CGContextSetLintJoin
3. line cap CGContextSetLineCap
4. Miter limit CGContextSetMiterLimit
5.Line dash pattern CGContextSetLineDash
6Stoke color space CGContextSetStrokeColorSpace
7.Stroke color CGContextSetStrokeColor/CGCOntextSetStrokeColorWithColor
8.Stroke patten CGContextSetStrokePatten
Quartz维护为每个上下文维护一个透明层栈,并且透明层是可以嵌套的。但由于层通常是栈的一部分,所以我们不能单独操作它们。
我们通过调用函数CGContextBeginTransparencyLayer来开始一个透明层,该函数需要两个参数:图形上下文与CFDictionary对象。字典中包含我们所提供的指定层额外信息的选项,但由于Quartz 2D API中没有使用字典,所以我们传递一个NULL。在调用这个函数后,图形状态参数保持不变,除了alpha值[默认设置为1]、阴影[默认关闭]、混合模式[默认设置为normal]、及其它影响最终组合的参数。
在透明层中绘制需要三步:
1. 调用函数CGContextBeginTransparencyLayer
2. 在透明层中绘制需要组合的对象
3. 调用函数CGContextEndTransparencyLayer