我正在尝试使用CGPathAddCurveToPoint创建一个15点半径的完美右半圆,如下所示:
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddCurveToPoint(path, NULL, 15, 0, 15, 30, 0, 30);
它从圆圈的中间开始。 然后将第一个控制点设置为圆的边界框的右上角。 第二个控制点设置在圆的边界框的右下角。 圆圈终止于边界框的底部中间。
但绘制时,圆圈呈卵形。
如何从0,0点向右开始到0,30结束,制作一个完美无瑕的右半球?
答案 0 :(得分:5)
CGPathAddCurveToPoint
创建Bézier curve,而不是圆弧。您要查找的方法是CGPathAddArc
或CGPathAddArcToPoint
,如下所示:
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddArc(path, NULL, 0, 15, 15, M_PI_2, -M_PI_2, true);