1

我正在尝试绘制具有功能性的图表NSBezierPath。如何删除添加到 a 的第一行和最后一行NSBezierPath?有什么直接的方法可以实现吗?

更新

我正在使用 appendBezierPathWithArcWithCenter 绘制弧线。然后我从两侧的中心画线以完成填充路径。现在我需要一条删除了两条线的路径。我不想创建另一个只包含弧线的贝塞尔路径。

4

2 回答 2

0

您应该考虑修改返回路径的函数。在 NSBezierPath 中,您只能修改与路径元素点关联的点(参见 [NSBezierPath setAssociatedPoints:atIndex:]),但不能修改路径元素类型。

于 2013-09-02T10:30:09.143 回答
0

您不能删除NSBezierPath. 您只能编辑现有元素或删除所有元素。您的情况的最佳选择是将所有元素(不需要的元素除外)复制到新路径。

如果路径很长并且可能存在性能问题,您可以移动第一个和最后一个点以匹配第二个和倒数第二个点。但是,这不会导致完全相同的绘图:

NSInteger elementCount = [path elementCount];
if (elementCount > 2) {
    CGPoint points[3];
    [path elementAtIndex:1 associatedPoints:points];
    points[1] = points[0];
    points[2] = points[0];
    [path setAssociatedPoints:points atIndex:0];

    [path elementAtIndex:elementCount - 2 associatedPoints:points];
    points[1] = points[0];
    points[2] = points[0];
    [path setAssociatedPoints:points atIndex:elementCount - 1];
}
于 2013-09-02T10:33:57.807 回答