使用UIBezierPath的带圆角的多边形

时间:2012-04-27 21:07:53

标签: ios core-graphics polygon uibezierpath

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

我应该指出,这需要适用于任何凸多边形(例如在voronoi图中找到)而不仅仅是矩形。

3 个答案:

答案 0 :(得分: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 - 第四方,到最后一个开始 圆角

    addArcWithCenter:radius:startAngle:endAngle:顺时针 - 四舍五入 角落,连接回第一面。

    closePath

答案 1 :(得分:2)

您可以使用PaintCodeApp,因此您不必编写任何绘图代码。有一个演示下载:http://www.paintcodeapp.com/

答案 2 :(得分:-3)

您可以参考下面的链接创建一个带圆角的多边形形状。

http://www.scriptscoop.net/t/ec0f886dcfea/create-hexagon-imageview-shape-in-ios.html