objective-c - CGPath (AddCurveToPoint) - 第一个控制点的 x 和 y 与第二个控制点之间的差异

标签 objective-c quartz-graphics cgpath

我是 Xcode 的新手,所以我决定习惯 Quartz 绘图,尽管我正在慢慢适应它,但我在绘制贝塞尔曲线路径时遇到了麻烦。

特别是,在我的 Illustrator 设计中,我想绘制一个形状(一副扑克牌中的黑桃 Logo ),尽管 x 和 y 点都可以,但我想我混淆了哪个点是第一个控件点,哪个是第二个。

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

这是怎么回事?

提前致谢,亚当。

Here is a picture describing what I mean

这是我的代码:

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);

最佳答案

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

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

例如,

Sector drawing with control points

关于objective-c - CGPath (AddCurveToPoint) - 第一个控制点的 x 和 y 与第二个控制点之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11148054/

相关文章:

objective-c - OpenGL ES 1.1 顶点缓冲对象不工作

objective-c - <错误> : FT_Open_Face failed: error 85

swift - 在一条线上绘制多个圆 CGGraphicsContext

swift - 在 Swift 2.0 中使用 MKCircle 检测 CGPathContainsPoint 是否存在

swift - 重复 SKAction 起始位置更改

objective-c - 在数组 Controller 上使用谓词来过滤相关对象

objective-c - 合并 NSNotifications

ios - 添加笔触时文本不可见

macos - 有没有办法将 ImageKit 的 IKSaveOptions 初始化为默认为 LZW 压缩的 TIFF?

swift - 在圆形 CGPath Swift 上添加 Sprite