从java.awt.geom.GeneralPath中删除一个点/操作

时间:2013-02-03 11:28:44

标签: java geometry pathgeometry

有没有办法删除一条普通路径的点? 我画了一个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),而不从new创建GeneralPath。 (表现原因)

以下命令将是我喜欢的,但这不可用:

GeneralPath.removesegment(1);

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

谢谢并注册

enter image description here

1 个答案:

答案 0 :(得分:4)

Path2D.Float派生的

GeneralPath不提供对其内部数据结构的访问,并且不允许您想要的操作类型。因此,除非您准备重新实现GeneralPath或规避访问限制,否则根本无法实现此目的。

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