使用UIBezierPath的带圆角的多边形

And*_*rew 1 core-graphics polygon ios uibezierpath

我想使用UIBezierPath创建一个带圆角的多边形.我相信这可以使用addCurveToPoint:controlPoint1:controlPoint2:和http://www.codeproject.com/Articles/31859/Draw-a-Smooth-Curve-through-a-Set-of-2D-Points-wit中的类似代码,但我想知道是否有任何现有(或更好)的方法来实现这一目标?

我应该指出,这将需要针对任何凸多边形(例如在voronoi图中找到)而不仅仅是矩形形状.

Dun*_*n C 6

你不想要addCurveToPoint.如果您正在使用UIBezierPath,则需要addArcWithCenter:radius:startAngle:endAngle:顺时针:

这是你做的.画出你的矩形.弄清楚你想要的角半径.在每个角落画圆圈,从每个角落插入角落半径.(每个角圆的中心将从每个角落插入x和y的角半径.)然后绘制出4行序列,连接矩形接触每个角落的圆的点.

每个弧将覆盖90度(pi/2,弧度).右上角的范围从0到pi/2.左上角的角度将从pi/2开始并转到pi.左下角的弧线范围从pi到3/2 pi.右下角的弧度范围为3/2 pi到2pi.

你将使用以下序列:

  • moveToPoint addLineToPoint - 第一面

    addArcWithCenter:radius:startAngle:endAngle:顺时针 - 第一个圆角

    lineToPoint - 第二侧,到下一个圆角的开头

    addArcWithCenter:radius:startAngle:endAngle:顺时针 - 第二个圆角

    lineToPoint - 第三方,到下一个圆角的开头

    addArcWithCenter:radius:startAngle:endAngle:顺时针 - 第三个圆角

    lineToPoint --forth side,到最后一个圆角的开头

    addArcWithCenter:radius:startAngle:endAngle:顺时针 - 四角圆角,连接回第一面.

    closePath