我正在尝试使用NSBezierPath
功能性绘制图表。如何删除添加到NSBezierPath
的第一行和最后一行?是否有一些直接的方法来实现这一目标?
更新
我正在使用appendBezierPathWithArcWithCenter绘制弧。然后我从两侧的中心画线,以完成填充它的路径。现在我需要一条删除了两条线的路径。我不想创建另一个仅由弧组成的贝塞尔路径。
答案 0 :(得分:0)
您应该考虑修改返回路径的函数。 在NSBezierPath中,您只能修改与路径元素点相关联的内容(请参阅[NSBezierPath setAssociatedPoints:atIndex:]),但不能修改路径元素类型。
答案 1 :(得分: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];
}