ios - 使用UIBezierPath的圆角多边形

标签 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图中找到),而不仅仅是矩形。

最佳答案

您不需要addCurveToPoint。如果您使用的是UIBezierPath,则需要addArcWithCenter:radius:startAngle:endAngle:clockwise:

这就是你要做的。绘制矩形。找出所需的拐角半径。在每个角上绘制圆,并从每个边开始插入圆角半径。 (每个拐角圆的中心将从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
  • 关于ios - 使用UIBezierPath的圆角多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10357869/

    相关文章:

    ios - 使用 ChildViewController 设置 View

    objective-c - UIViewController 知道它是被推送还是弹出?

    java - objective-c 中的点符号

    iOS 通过手指滑动绘制人字形图案

    objective-c - objective-c : How do i smoothen the brush like a real brush?

    iphone - 绘制一个多边形并用背景图像填充它

    java - Java中使用旋转矩阵旋转矩形

    iphone - 设备上的 iPhone kccparamerror 中的 AES 加密

    cocoa-touch - 基于CGRect屏蔽UIView

    c++ - 具有多边形裁剪区域的 Liang Barsky 裁线算法