Core Graphics的研究CGContext篇

CGContext

Quartz 2D绘图目标。

图形上下文包含绘图参数和将页面上的油漆渲染到目标所需的所有特定于设备的信息,无论目标是应用程序中的窗口,位图图像,PDF文档还是打印机。 您可以通过使用Quartz图形上下文创建功能或使用Carbon,Cocoa或Printing框架中提供的高级功能来获取图形上下文。 Quartz为各种Quartz图形上下文(包括位图图像和PDF)提供创建功能。 Cocoa框架提供用于获取窗口图形上下文的功能。 打印框架提供了获取适用于目标打印机的图形上下文的功能。

管理图形上下文

1. CGContextFlush(强制将窗口上下文中所有待处理的绘制操作立即呈现给目标设备)

/*
参数介绍
1.c: 要刷新的窗口上下文。 如果传递PDF上下文或位图上下文,则此功能不起作用;
*/
void CGContextFlush(CGContextRef c);

2. CGContextGetTypeID(返回图形上下文的类型标识符)

CFTypeID CGContextGetTypeID(void);

返回值:CGContextRef类型的标识符。

3. CGContextRelease(减少图形上下文的引用计数)

/*
参数介绍
1.c:要释放的图形上下文
*/
void CGContextRelease(CGContextRef c);

4. CGContextRetain(增加图形上下文的引用计数)

/*
参数介绍
1.c:要复制的图形上下文
*/
CGContextRef CGContextRetain(CGContextRef c);

返回值:返回与context参数传递的图形上下文相同的图形上下文

5. CGContextSynchronize(将窗口上下文标记为要更新)

/*
参数介绍
1.c:要同步的窗口上下文。 如果传递PDF上下文或位图上下文,则此功能不执行任何操作
*/
void CGContextSynchronize(CGContextRef c);

保存和还原当前图形状态

1. CGContextSaveGState(将当前图形状态的副本推送到上下文的图形状态堆栈中)

/*
参数介绍
1.c:要保存的当前图形状态的图形上下文
*/
void CGContextSaveGState(CGContextRef c);

2. CGContextRestoreGState(将当前图形状态设置为最近保存的状态)

/*
参数介绍
1.c:要修改其状态的图形上下文
*/
void CGContextRestoreGState(CGContextRef c);

 

获取和设置图形状态参数

1. CGContextGetInterpolationQuality(返回图形上下文的当前插值质量级别)

/*
参数介绍
1.c:要检查的图形上下文
*/
CGInterpolationQuality CGContextGetInterpolationQuality(CGContextRef c);

返回值:当前插值质量水平。

2. CGContextSetFlatness(设置图形上下文中弯曲路径的精度)

/*
参数介绍
1.c:要修改的图形上下文;
2.flatness:真实曲线上的点与近似曲线上的点之间的最大允许距离(以设备像素为单位);
*/
void CGContextSetFlatness(CGContextRef c, CGFloat flatness);

3. CGContextSetInterpolationQuality(设置图形上下文的插值质量级别)

/*
参数介绍
1.c:要修改的图形上下文;
2.quality:一个常数,指定所需的插值质量级别。 有关可能的值,请参见CGInterpolationQuality;
*/
void CGContextSetInterpolationQuality(CGContextRef c, CGInterpolationQuality quality);

4. CGContextSetLineCap(为在图形上下文中绘制的线的端点设置样式)

/*
参数介绍
1.c:要修改的图形上下文;
2.cap:线帽样式常量-kCGLineCapButt(默认值),kCGLineCapRound或kCGLineCapSquare。 参见CGPath;
*/
void CGContextSetLineCap(CGContextRef c, CGLineCap cap);

5. CGContextSetLineDash(在图形上下文中设置虚线的图案)

/*
参数介绍
1.c:要修改的图形上下文;
2.phase:一个值,以用户空间为单位指定线条开始到虚线图案的距离。 例如,传递值3表示从虚线的起点开始以三个单位开始绘制虚线。 传递0值将以虚线图案的开头开始绘制一条线;
3.lengths:一个值数组,分别指定虚线图案的绘制段和未绘制段的长度;对于没有虚线图案,则指定NULL。例如,传递值[2,3]的数组将设置一个虚线图案,该图案在2个用户空间单元长的绘制段和3个用户空间单元长的未绘制段之间交替。 传递值[1,3,4,2]会将模式设置为1个单元的绘画段,3个单元的未绘画段,4个单元的绘画段和2个单元的未绘画段;
4.count:如果lengths参数指定一个数组,则传递数组中的元素数。 否则,传递0;
*/
void CGContextSetLineDash(CGContextRef c, CGFloat phase, const CGFloat *lengths, size_t count);

6. CGContextSetLineJoin(设置图形上下文中连接线的连接的样式)

/*
参数介绍
1.c:要修改的图形上下文;
2.join:线连接值-kCGLineJoinMiter(默认值),kCGLineJoinRound或kCGLineJoinBevel。 参见CGPath
*/
void CGContextSetLineJoin(CGContextRef c, CGLineJoin join);

7. CGContextSetLineWidth(设置图形上下文的线宽)

/*
参数介绍
1.c:要修改的图形上下文;
2.width:要使用的新线宽,以用户空间单位为单位。 该值必须大于0;
*/
void CGContextSetLineWidth(CGContextRef c, CGFloat width);

8. CGContextSetMiterLimit(设置图形上下文中连接线的连接的斜接限制)

/*
参数介绍
1.c:要修改的图形上下文;
2.limit:要使用的斜接限制;
*/
void CGContextSetMiterLimit(CGContextRef c, CGFloat limit);

9. CGContextSetPatternPhase(设置上下文的模式阶段)

/*
参数介绍
1.c:要修改的图形上下文;
2.phase:模式阶段,在用户空间中指定;
*/
void CGContextSetPatternPhase(CGContextRef c, CGSize phase);

10. CGContextSetFillPattern(在指定的图形上下文中设置填充图案)

/*
参数介绍
1.c:要修改的图形上下文;
2.pattern:填充图案。 对象被保留; 返回时,您可以放心释放它;
3.components:如果图案是未着色(或遮罩)图案,请传递一个强度值数组,这些强度值指定在绘制图案时要使用的颜色。 数组元素的数量必须等于填充图案颜色空间基本空间中的组件数量,再加上alpha值的附加组件。如果图案是彩色图案,则传递一个alpha值;
*/
void CGContextSetFillPattern(CGContextRef c, CGPatternRef pattern, const CGFloat *components);

11. CGContextSetRenderingIntent(设置当前图形状态下的渲染意图)

/*
参数介绍
1.c:要修改的图形上下文;
2.intent:呈现意图常量-kCGRenderingIntentDefault,kCGRenderingIntentAbsoluteColorimetric,kCGRenderingIntentRelativeColorimetric,kCGRenderingIntentPerceptual或kCGRenderingIntentSaturation。 有关这些常量的讨论,请参见CGColorSpace;
*/
void CGContextSetRenderingIntent(CGContextRef c, CGColorRenderingIntent intent);

12. CGContextSetShouldAntialias(为图形上下文设置抗锯齿功能)

/*
参数介绍
1.c:要修改的图形上下文;
2.shouldAntialias:一个布尔值,它指定是否应打开抗锯齿功能。 创建窗口或位图上下文时,抗锯齿默认情况下处于打开状态。 对于其他类型的上下文,此功能已关闭;
*/
void CGContextSetShouldAntialias(CGContextRef c, bool shouldAntialias);

13. CGContextSetStrokePattern(在指定的图形上下文中设置笔划样式)

/*
参数介绍
1.c:要修改的图形上下文;
2.pattern:抚摸模式,该对象被保留; 返回时,您可以放心释放它;
3.components:如果指定的图案是未着色(或遮罩)图案,请传递一个强度值数组,这些强度值指定在绘制图案时要使用的颜色。 数组元素的数量必须等于笔划图案颜色空间的基础空间中的组件数量,再加上alpha值的附加组件。如果指定的图案是彩色图案,则传递一个alpha值;
*/
void CGContextSetStrokePattern(CGContextRef c, CGPatternRef pattern, const CGFloat *components);

14. CGContextSetBlendMode(设置如何通过图形上下文合成样本值)

/*
参数介绍
1.c:要修改的图形上下文;
2.mode:混合模式。 有关可提供的常量列表,请参见CGBlendMode。
*/
void CGContextSetBlendMode(CGContextRef c, CGBlendMode mode);

15. CGContextSetAllowsAntialiasing(设置是否允许图形上下文进行抗锯齿)

/*
参数介绍
1.c:图形上下文;
2.allowsAntialiasing:一个布尔值,指定是否允许抗锯齿。 传递true允许抗锯齿; 否则为假。 此参数不是图形状态的一部分;
*/
void CGContextSetAllowsAntialiasing(CGContextRef c, bool allowsAntialiasing);

16. CGContextSetAllowsFontSmoothing(设置是否允许图形上下文的字体平滑)

/*
参数介绍
1.c:图形上下文;
2.allowsFontSmoothing:一个布尔值,它指定在指定的上下文中是否允许字体平滑;
*/
void CGContextSetAllowsFontSmoothing(CGContextRef c, bool allowsFontSmoothing);

17. CGContextSetShouldSmoothFonts(在图形上下文中启用或禁用字体平滑)

/*
参数介绍
1.c:要修改的图形上下文;
2.shouldSmoothFonts:一个布尔值,指定是否启用字体平滑;
*/
void CGContextSetShouldSmoothFonts(CGContextRef c, bool shouldSmoothFonts);

18. CGContextSetAllowsFontSubpixelPositioning(设置是否允许在图形上下文中放置亚像素)

/*
参数介绍
1.c:图形上下文;
2.allowsFontSubpixelPositioning:一个布尔值,它指定在指定的上下文中是否允许字形的子像素定位;
*/
void CGContextSetAllowsFontSubpixelPositioning(CGContextRef c, bool allowsFontSubpixelPositioning);

19. CGContextSetShouldSubpixelPositionFonts(在图形上下文中启用或禁用子像素定位)

/*
参数介绍
1.c:图形上下文;
2.shouldSubpixelPositionFonts:一个布尔值,指定是否启用子像素定位;
*/
void CGContextSetShouldSubpixelPositionFonts(CGContextRef c, bool shouldSubpixelPositionFonts);

20. CGContextSetAllowsFontSubpixelQuantization(设置是否允许图形上下文的子像素量化)

/*
参数介绍
1.c:图形上下文;
2.allowsFontSubpixelQuantization:一个布尔值,指定在指定上下文中是否允许字形的子像素量化;
*/
void CGContextSetAllowsFontSubpixelQuantization(CGContextRef c, bool allowsFontSubpixelQuantization);

21. CGContextSetShouldSubpixelQuantizeFonts(在图形上下文中启用或禁用子像素量化)

/*
参数介绍
1.c:图形上下文;
2.shouldSubpixelQuantizeFonts:一个布尔值,指定是否启用子像素量化;
*/
void CGContextSetShouldSubpixelQuantizeFonts(CGContextRef c, bool shouldSubpixelQuantizeFonts);

 

构建路径

这些函数用于定义当前路径的几何图形。有关如何定义路径的详细信息,请参见CGPath。

1. CGContextAddArc(在当前路径上添加一个圆的弧,可能前面有一个直线段)

/*
参数介绍
1.c:图形上下文;
2.x:以用户空间坐标表示的弧中心的x值;
3.y:在用户空间坐标中,弧中心的y值;
4.radius:以用户空间坐标表示的弧半径;
5.startAngle:到弧起点的角度,从正x轴以弧度测量;
6.endAngle:到弧终点的角度,从正x轴以弧度测量;
7.clockwise:指定1创建顺时针弧,或指定0创建逆时针弧;
*/
void CGContextAddArc(CGContextRef c, CGFloat x, CGFloat y, CGFloat radius, CGFloat startAngle, CGFloat endAngle, int clockwise);

2. CGContextAddArcToPoint(使用半径和切点将圆的圆弧添加到当前路径)

/*
参数介绍
1.c:当前路径不为空的图形上下文;
2.x1:在用户空间坐标中,第一条切线的端点的x值。第一条切线从当前点绘制到(x1,y1);
3.y1:用户空间坐标中第一条切线终点的y值。第一条切线从当前点绘制到(x1,y1);
4.x2:以用户空间坐标表示的第二条切线终点的x值。第二条切线从(x1,y1)绘制到(x2,y2);
5.y2:用户空间坐标中第二条切线终点的y值。第二条切线从(x1,y1)绘制到(x2,y2);
6.radius:以用户空间坐标表示的弧半径;
*/
void CGContextAddArcToPoint(CGContextRef c, CGFloat x1, CGFloat y1, CGFloat x2, CGFloat y2, CGFloat radius);

3. CGContextAddCurveToPoint(使用提供的控制点和端点从当前点附加一个三次Bézier曲线)

/*
参数介绍
1.c:当前路径不为空的图形上下文;
2.cp1x:在用户空间坐标中,曲线的第一个控制点的x值;
3.cp1y:在用户空间坐标中,曲线的第一个控制点的y值:
4.cp2x:以用户空间坐标表示的曲线第二个控制点的x值;
5.cp2y:用户空间坐标中曲线第二个控制点的y值;
6.x:用户空间坐标中的x值,曲线的终点;
7.y:用户空间坐标中的y值,曲线的终点;
*/
void CGContextAddCurveToPoint(CGContextRef c, CGFloat cp1x, CGFloat cp1y, CGFloat cp2x, CGFloat cp2y, CGFloat x, CGFloat y);

4.CGContextAddLines(将一系列连接的直线段添加到当前路径)

/*
参数介绍
1.c: 图形上下文
2.points:一个数组,指定要绘制的线段的起点和终点。 数组中的每个点都在用户空间中指定一个位置。 数组中的第一点指定初始起点;
3.count:点数组中的元素数;
*/
void CGContextAddLines(CGContextRef c, const CGPoint *points, size_t count);

5.CGContextAddLineToPoint(从当前点到提供的点附加一条直线段)

/*
属性介绍
1.c: 当前路径不为空的图形上下文;
2.x:用户空间坐标中线段末端的x值;
3.y:用户空间坐标中线段末端的y值;
*/
void CGContextAddLineToPoint(CGContextRef c, CGFloat x, CGFloat y);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值