1

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

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

4

3 回答 3

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 边,到最后一个圆角的开始

    addArcWithCenter:radius:startAngle:endAngle:顺时针——第四个圆角,连接回第一边。

    关闭路径

于 2012-04-28T00:42:59.947 回答
2

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

于 2012-04-27T22:45:12.360 回答
-5

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

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

于 2015-11-30T14:14:09.227 回答