Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 在Cocoa应用程序中编辑NSBezierPath_Objective C_Macos_Cocoa - Fatal编程技术网

Objective c 在Cocoa应用程序中编辑NSBezierPath

Objective c 在Cocoa应用程序中编辑NSBezierPath,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我试图画一个具有NSBezierPathFunctionality的图。如何删除添加到NSBezierPath的第一行和最后一行?有什么直接的方法可以做到这一点吗 更新 我正在使用appendBezierPathWithArcWithCenter绘制圆弧。然后我从两边的中心画线来完成填充的路径。现在我需要一个删除了两条线的路径。我不想创建另一个仅由圆弧组成的贝塞尔路径。你应该考虑修改函数,它返回路径。 在NSBezierPath中,您只能修改与路径元素点关联的元素,请参见[NSBezierPat

我试图画一个具有NSBezierPathFunctionality的图。如何删除添加到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];
}

你说的第一点和最后一点是什么意思?为什么需要删除它们?是否纯粹出于绘图目的,可以屏蔽路径?@DavidRönnqvist请参阅更新。一个函数正在返回一条bezier路径,我只希望删除最后绘制的直线的特定部分。您是否考虑过使用一条带有圆弧的路径并使用AppendBezier路径:将该路径添加到带有两条直线的路径?@DavidRönnqvist no.我在特定半径处绘制圆弧,然后在端点处绘制直线。我不知道起点和终点