3

我对 Xcode 很陌生,所以我决定习惯 Quartz 绘图,虽然我慢慢习惯了,但我在绘制贝塞尔路径时遇到了麻烦。

特别是,从我的 Illustrator 设计中,我想绘制一个形状(一包扑克牌中的 Spade 标志)虽然 x 和 y 点都可以,但我想我混淆了哪个点是第一个控制点,哪个点是第一个控制点是第二个。

我一直把它想象成,如果你想象一张桌子并沿着它的顶部旋转形状的外部(所以形状总是在桌子上,而不是它下面),第一个控制点在左边,第二个是在右侧。

这是什么情况?

在此先感谢,亚当。

这是一张描述我的意思的图片

这是我的代码:

CGMutablePathRef spadePath = CGPathCreateMutable();

CGPathMoveToPoint(spadePath, NULL, 17.0f, 0.0f);

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.3f, 17.0f, 7.318f, 34.0f, 25.475f);
CGPathAddCurveToPoint(spadePath, NULL, 34.0f, 14.754f, 34.0f, 36.197f, 20.838f, 35.029f);
CGPathAddCurveToPoint(spadePath, NULL, 24.679f, 38.425f, 20.838f, 41.03f, 17.0f, 39.2f);
CGPathAddCurveToPoint(spadePath, NULL, 2.846f, 39.2f, 31.156f, 39.2f, 13.163f, 35.029f);
CGPathAddCurveToPoint(spadePath, NULL, 13.163f, 41.03f, 9.323f, 38.425f, 0.0f, 25.475f);
CGPathAddCurveToPoint(spadePath, NULL, 0.0f, 36.197f, 0.0f, 14.754f, 17.0f, 0.0f);

CGPathCloseSubpath(spadePath);
4

2 回答 2

4

我刚刚找到了我自己问题的答案,在绘制曲线时,你告诉它那个部分的基本坐标。

因此,在解析控制点 1 的 x 和 y 坐标时,您将基本控制点的控制点坐标提供给起点,最后一个点也是如此,最后一个点的位置也是如此。

例如,

带控制点的扇形图

于 2012-06-22T02:23:17.440 回答
2

您错误地转录了一些坐标。例如,这是您的第一条曲线:

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.3f, 17.0f, 7.318f, 34.0f, 25.475f);

但根据你的图表,应该是这样的:

CGPathAddCurveToPoint(spadePath, NULL, 17.0f, 7.318f, 30.0f, 14.754f, 34.0f, 25.475f);

但是,在 Illustrator 图表中,附加到点 2 的控制点看起来也标有错误的 X 坐标。它们被标记为 30,但可能应该被标记为 34。我没有检查所有标签。

于 2012-06-22T01:40:21.093 回答