quartz2D 学习 2

来源:互联网 发布:thinkphp源码 编辑:程序博客网 时间:2024/06/09 18:14

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结构如下:

 

复制代码

  1. void CGContextSetLineDash (
  2. CGContextRef ctx,
  3. float phase,
  4. c*****t float lengths[],
  5. size_t count
  6. );

路径描边的函数

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


原创粉丝点击