有什么方法可以删除一般路径的点吗?
我画一个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中的蓝色标记点。
感谢和Regads
最佳答案
派生 Path2D.Float
的 GeneralPath
不提供对其内部数据结构的访问,并且不允许您进行所需的操作。因此,除非您准备重新实现GeneralPath
或规避访问限制,否则根本无法实现此目的。
另一方面,我怀疑性能应该不是很大的问题。我认为在大多数应用程序中,绘制路径比在内存中操作要花费更多的时间,因此从现有路径创建新路径应该不会花费太长时间。我将使用PathIterator
周围的包装器来实现此功能,因此您可以使用 Path2D.append
将数据移动到新路径。包装器只需检测要删除的点,然后跳过这些点,即可将其他所有内容委派给原始路径的默认迭代器。