3

我正在尝试使用 CGPathAddCurveToPoint 创建一个半径为 15 点的完美右半圆,如下所示:

CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddCurveToPoint(path, NULL, 15, 0, 15, 30, 0, 30);

它从圆圈的顶部中间开始。然后将第一个控制点设置为圆圈边界框的右上角。第二个控制点设置在圆圈边界框的右下角。圆圈在边界框的底部中间结束。

但是在绘制时,圆圈具有蛋状形状。

如何制作一个完美无瑕的右半球,从 0,0 点开始向右,到 0,30 点结束?

4

1 回答 1

5

CGPathAddCurveToPoint创建贝塞尔曲线,而不是圆弧。您正在寻找的方法是CGPathAddArcor CGPathAddArcToPoint,如下所示:

CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddArc(path, NULL, 0, 15, 15, M_PI_2, -M_PI_2, true);
于 2012-08-17T20:38:37.047 回答