Path介绍PathsPaths中的几个重要元素PointsvoidCGContextMoveToPoint(CGContextRefc,CGFloatx,CGFloaty);指定一个点成为currentpointQuartz会跟踪currentpoint一般执行完一个相关函数后,currentpoint都会相应的改变.Lines相关的几个函数voidCGContextAddLineToPoint(CGContextRefc,CGFloatx,CGFloaty);创建一条直线,从currentpoint到(x,y)然后currentpoint会变成(x,y)voidCGContextAddLines(CGContextRefc,constCGPointpoints[],size_tcount);创建多条直线,比如points有两个点,那么会画两条直线从currentpoint到(x1,y1),然后是(x1,y1)到(x2,y2)然后currentpoint会变成points中的最后一个点Arcs两种方法创建弧度第一种voidCGContextAddArc(CGContextRefc,CGFloatx,//圆心的x坐标CGFloaty,//圆心的x坐标CGFloatradius,//圆的半径CGFloatstartAngle,//开始弧度CGFloatendAngle,//结束弧度intclockwise//0表示顺时针,1表示逆时针);假如想创建一个完整的圆圈,那么开始弧度就是0结束弧度是2pi,因为圆周长是2*pi*r.最后,函数执行完后,currentpoint就被重置为(x,y).还有一点要注意的是,假如当前path已经存在一个subpath,那么这个函数执行的另外一个效果是会有一条直线,从currentpoint到弧的起点第二种voidCGContextAddArcToPoint(CGContextRefc,CGFloatx1,//端点1的x坐标CGFloaty1,//端点1的y坐标CGFloatx2,//端点2的x坐标CGFloaty2,//端点2的y坐标CGFloatradius//半径);原理:首先画两条线,这两条线分别是currentpointto(x1,y1)和(x1,y1)to(x2,y2).这样就是出现一个以(x1,y1)为顶点的两条射线,然后定义半径长度,这个半径是垂直于两条射线的,这样就能决定一个圆了,更好的理解看下图,不过个人认为下图所标的tangentpoint1的位置是错误的。最后,函数执行完后,currentpoint就被重置为(x2,y2).还有一点要注意的是,假如当前path已经存在一个subpath,那么这个函数执行的另外一个效果是会有一条直线,从currentpoint到(x1,y1)Curves画曲线,一般是一条直线,然后定义几个控制点,使直线变弯曲。三次曲线函数voidCGContextAddCurveToPoint(CGContextRefc,CGFloatcp1x,//控制点1x坐标CGFloatcp1y,//控制点1y坐标CGFloatcp2x,//控制点2x坐标CGFloatcp2y,//控制点2y坐标CGFloatx,//直线的终点x坐标CGFloaty//直线的终点y坐标);假如第二个控制点(cp2x,cp2y)比(cp1x,cp1y)更接近currentpoint,那么会形成一个封闭的曲线二次曲线函数voidCGCon...