我正在尝试绘制具有功能性的图表NSBezierPath
。如何删除添加到 a 的第一行和最后一行NSBezierPath
?有什么直接的方法可以实现吗?
更新
我正在使用 appendBezierPathWithArcWithCenter 绘制弧线。然后我从两侧的中心画线以完成填充路径。现在我需要一条删除了两条线的路径。我不想创建另一个只包含弧线的贝塞尔路径。
我正在尝试绘制具有功能性的图表NSBezierPath
。如何删除添加到 a 的第一行和最后一行NSBezierPath
?有什么直接的方法可以实现吗?
更新
我正在使用 appendBezierPathWithArcWithCenter 绘制弧线。然后我从两侧的中心画线以完成填充路径。现在我需要一条删除了两条线的路径。我不想创建另一个只包含弧线的贝塞尔路径。
您应该考虑修改返回路径的函数。在 NSBezierPath 中,您只能修改与路径元素点关联的点(参见 [NSBezierPath setAssociatedPoints:atIndex:]),但不能修改路径元素类型。
您不能删除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];
}