【移动应用开发技术】疯狂ios讲义之使用路径_第1页
【移动应用开发技术】疯狂ios讲义之使用路径_第2页
【移动应用开发技术】疯狂ios讲义之使用路径_第3页
【移动应用开发技术】疯狂ios讲义之使用路径_第4页
【移动应用开发技术】疯狂ios讲义之使用路径_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】疯狂ios讲义之使用路径

正如前面提到的Quartz2D只提供了绘制矩形、椭圆的函数并没有直接提供绘制圆角矩形、三角形等几何图形的函数。为了绘制更复杂的图形必须启用路径。表12.4列出了Quartz2D为创建路径提供的函数。表12.4创建路径的相关函数除此之外Quartz2D还提供了如下函数来获取当前CGContextRef所包含的路径信息。boolCGContextIsPathEmpty(CGContextRefc)该函数用于判断指定CGContextRef包含的路径是否为空。CGPointCGContextGetPathCurrentPoint(CGContextRefc)该函数用于返回指定CGContextRef包含的路径的当前点。CGRectCGContextGetPathBoundingBox(CGContextRefc)该函数用于返回指定CGContextRef中能完整包围所有路径的最小矩形。boolCGContextPathContainsPoint(CGContextRefcontext,CGPointpoint,CGPathDrawingModemode)该函数判断指定CGContextRef包含的路径按指定绘制模式进行绘制时是否需要绘制point点。为了在Canvas中使用路径可按如下步骤进行。调用CGContextBeginPath()函数开始定义路径。调用表12.4所示的各种函数添加子路径。如果路径添加完成调用CGContextClosePath()函数关闭路径。调用CGContextDrawPath()、CGContextEOFillPath()、CGContextFillPath()或CGContextStrokePath()函数来填充路径或绘制路径边框即可。在这些方法中第一个方法可以代替后面的几个方法第一个方法指定使用特定的模式来绘制图形它支持如下几种绘制方式。kCGPathFill指定填充路径。相当于CGContextFillPath()函数。kCGPathEOFill指定采用even-odd模式填充路径。相当于CGContextEOFillPath()函数。kCGPathStroke指定只绘制路径。相当于CGContextStrokePath()函数。kCGPathFillStroke指定既绘制路径也填充路径。如果采用这种绘制方式必须使用该函数。kCGPathEOFillStroke指定既绘制路径也采用even-odd模式填充路径。如果采用这种绘制方式必须使用该函数。通过上面介绍的CGContextAddArc()函数我们可以绘制扇形下面的程序代码使用循环绘制了10个扇形而且这10个扇形的透明度逐渐降低。首先创建一个SingleViewApplication该Application包含一个应用程序委托代理类、一个视图控制器和配套的Storyboard界面设计文件。将该界面设计文件中最大的View改为使用自定义的FKArcView类。该程序的控制器类几乎无须修改只要重写FKArcView的drawRect:方法在该方法中使用路径绘制扇形即可。下面是FKArcView类的实现代码。程序清单codes/12/12.2/AddArcTest/AddArcTest/FKArcView.m面程序中的粗体字代码绘制了从M_PI*1.5角度12点方向开始到M_PI角度9点方向结束的扇形——在该绘图API中0度代表X轴方向也就是3点方向。需要指出的是关于CGContextAddArc()函数的最后一个参数官方文档介绍该参数为0代表逆时针但笔者运行时看到的效果是0代表顺指针可参见下面的运行效果。编译、运行该程序可以看到如图12.7所示的效果。从上面程序的运行结果来看相信读者对CGContextAddArc(CGContextRefc,CGFloatx,CGFloaty,CGFloatradius,CGFloatstartAngle,CGFloatendAngle,intclockwise)函数的用法已经比较清楚该方法的第2、3个参数指定圆弧的圆心第4个参数用于设置圆弧的半径第5、6个参数则用于设置圆弧的开始角度、结束角度最后一个参数用于设置是否顺时针旋转。可能有读者对CGContextAddArcToPoint(CGContextRefc,CGFloatx1,CGFloaty1,CGFloatx2,CGFloaty2,CGFloatradius)函数感到疑惑该方法也是添加一段圆弧路径。确定这段圆弧的方式是假设从当前点到P1x1、y1绘制一条线条再从P1x1、y1到P2x2、y2绘制一条线条CGContextAddArcToPoint()则绘制一条同时与上面两条线条相切且半径为radius的圆弧。该函数方法的示意图如图12.8所示。图12.8CGContextAddArcToPoint()函数的示意借助CGContextAddArcToPoint()和CGContextAddLineToPoint()函数可以非常容易地实现添加圆角矩形路径的方法所谓圆角矩形就是在矩形的每个角都绘制一段90°的圆弧。除此之外还有CGContextMoveToPoint(CGContextRefc,CGFloatx,CGFloaty)函数用于把绘制点移动到指定位置借助这些方法还可以绘制任意的多角星。下面的程序代码将会开发两个自定义函数一个用于添加圆角矩形一个用于添加多角星。程序代码如下。程序清单codes/12/12.2/PathTest/FKContext.h上面两个函数都没有执行任何绘制操作它们都只是向当前CGContextRef中添加路径第一个函数用于添加一个圆角矩形路径第二个函数用于添加一个多角星路径。上面这个函数库与项目无关该函数库中包含的两个函数完全可以在任何项目中复用。因此如果读者以后的项目需要绘制圆角矩形、多角星只要将该文件复制到项目中并导入该函数库即可调用这两个函数添加路径。实例绘制任意多角星下面创建一个应用来绘制圆角矩形和多角星。首先创建一个SingleViewApplication该Application包含一个应用程序委托代理类、一个视图控制器和配套的Storyboard界面设计文件。将该界面设计文件中最大的View改为使用自定义的FKPathView类。该程序的控制器类几乎无须修改只要重写FKPathView的drawRect:方法在该方法中调用FKContext.h中的方法来添加圆角矩形、多角星路径然后根据需要采用不同的方式绘制这些路径即可。下面是FKPathView类的实现代码。程序清单codes/12/12.2/PathTest/FKPathVie

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论