3

有什么办法可以删除一条一般路径的点吗?我画了一个 GeneralPath 如下:

GeneralPath gp1=new GeneralPath();
gp1.moveTo(5,5);
gp1.lineTo(10,10);
gp1.lineto(10,30);
gp1.curveTo(2, 2, 7, 7, 5, 5);
gp1.closePath();

现在我想删除一个特定的点/操作,例如 lineto(10,10) 而不从新创建 GeneralPath。(性能原因)

我喜欢如下命令,但这不可用:

GeneralPath.removesegment(1);

附上一个截图,这应该可以解释我的愿望:-) 我想删除我的 GeneralPath 中的蓝色标记点。

感谢和问候

在此处输入图像描述

4

1 回答 1

4

Path2D.Float,从中GeneralPath派生,不提供对其内部数据结构的访问,并且不允许您想要的那种操作。因此,除非您准备重新实施GeneralPath或规避访问限制,否则根本无法实现这一目标。

另一方面,我怀疑性能应该是一个很大的问题。我认为在大多数应用程序中,绘制路径比在内存中操作它们花费更多时间,因此从现有路径创建新路径不应该花费太长时间。我将使用围绕 的包装器来实现这一点PathIterator,因此您可以使用Path2D.append将数据移动到新路径。包装器将简单地检测您要删除的点并跳过这些点,将其他所有内容委托给原始路径的默认迭代器。

于 2013-02-04T16:19:48.103 回答