Ios6 如何组合UIBezierPath图形?
我正在尝试组合几个Ios6 如何组合UIBezierPath图形?,ios6,uibezierpath,cgpath,Ios6,Uibezierpath,Cgpath,我正在尝试组合几个UIBezierPath图形 我可以绘制不同类型的图形(直线、三次贝塞尔、二次贝塞尔),每个图形都可以填充或不填充。我随机选择绘图类型,我的目标是制作3个不同的绘图,它们在一个点上相连 因此,第一条,比如说,线条画的终点,第二条路径——可能是一个三次贝塞尔曲线——开始。在这结束的地方,第三个,也许是一个填充的线条画开始了 我有一个正方形的UIView,我正试图把它画进去,每个路径都应该有它自己的UIView:第一个1/3,第二个和第三个 我可以用一个UIBezierPath对象
UIBezierPath
图形
我可以绘制不同类型的图形(直线、三次贝塞尔、二次贝塞尔),每个图形都可以填充或不填充。我随机选择绘图类型,我的目标是制作3个不同的绘图,它们在一个点上相连
因此,第一条,比如说,线条画的终点,第二条路径——可能是一个三次贝塞尔曲线——开始。在这结束的地方,第三个,也许是一个填充的线条画开始了
我有一个正方形的UIView
,我正试图把它画进去,每个路径都应该有它自己的UIView
:第一个1/3,第二个和第三个
我可以用一个
UIBezierPath
对象创建这个,还是需要创建3个不同的对象?如何使它们在同一点上结束和开始?有没有办法用子路径实现这一点?UIBezierPath只是CGPath的包装,CGPath本身只是一组用于绘制的指令(通过笔划或填充,或两者兼而有之)。那幅画可以在任何地方进行。换句话说,UIBezierPath只是一个绘图工具;重要的是图纸本身。给定一个图形上下文(可能是UIView、UIImage、CALayer等等),您可以连续绘制任意数量的图形—例如,一条直线,然后是一个立方贝塞尔曲线,然后是一个填充线图形。但是,如何执行这些绘图位完全取决于您。您不应该真正关心是否使用三个UIBezierPath、一个UIBezierPath、多个路径、一个路径、子路径,不管是什么(或者甚至通过将其他图形复制到此图形中)——最终的效果才是最重要的,即最终在该图形上下文中完成的累积图形
你的问题就像在问,“我应该用右手还是左手画这个圆,我应该逆时针还是顺时针画?”这无关紧要。一旦完成,将画出一个圆;这才是最重要的。UIBezierPath的实例方法如下()
-addLineToPoint:
-addarchwithcenter:radius:startAngle:endAngle:顺时针方向:
-addCurveToPoint:controlPoint1:controlPoint2:
-addQuadCurveToPoint:controlPoint:
-附录路径:
-closePath
关闭路径
请随意查看我的开源库,它名为。;)
如果你想要更多的自定义路径图,我推荐。您可以创建任意复杂的路径(您可以通过
CGPathAdd…
方法组合简单路径)。最后,使用CGPathAddPath()
将它们组合在一起
void CGPathAddPath (
CGMutablePathRef path1, // The mutable path to change.
const CGAffineTransform *m, // A pointer to an affine transformation matrix, or NULL if no transformation is needed. If > specified, Quartz applies the transformation to path2 before it is added to path1.
CGPathRef path2 // The path to add.
);
您可以这样组合路径:
UIBezierPath *endPath = [UIBezierPath bezierPath];
[endPath appendPath:leftLine];
[endPath appendPath:rightLine];
[endPath appendPath:midLine];
如果问题只是你不知道如何画画,我的书会解释: