java/swing:形状问题:序列化和组合
我有两个问题。假设我有两个java/swing:形状问题:序列化和组合,java,swing,graphics,shape,Java,Swing,Graphics,Shape,我有两个问题。假设我有两个Shapes、shape1和shape2 如何以某种方式序列化它们,以便将信息保存到文件中,然后在另一台计算机上重新创建?(Shape不可Serializable,但它确实有getPathIterator()方法,似乎可以从中获取信息,但这有点像拖拽+我不确定以后如何重建Shape对象。) 如何将它们组合成一个新的形状,以便它们形成一个连接边界?(例如,如果形状1是一个大正方形,而形状2是正方形内部的一个小圆,则我希望组合的形状是一个带有小圆孔的大正方形) 我相信您可以
Shape
s、shape1
和shape2
Shape
不可Serializable
,但它确实有getPathIterator()
方法,似乎可以从中获取信息,但这有点像拖拽+我不确定以后如何重建Shape
对象。)我相信您可以使用
java.awt.geom.Path2D.Double
从路径信息重构形状。但是,它可能没有特定实现那么有效
要使所有具有Shape
作为字段的类在没有特殊工作的情况下可序列化,则需要确保所有构造的Shape可序列化所提供Shape
s的子类,这些子类在readObject
方法中初始化数据。如果有需要向构造函数发送数据的情况,那么您将需要“串行代理”(我认为在这种情况下没有必要这样做)
序列化底层模型数据可能更好<代码>形状
s通常是临时构造的。我想我已经找到了问题第二部分的答案:
Shape shape1, shape2;
shape1 = ...;
shape2 = ...;
Area area = new Area(shape1);
area.subtract(new Area(shape2));
// "area" is now a Shape that is the difference between the two shapes.
但是,当输入包含样条曲线或贝塞尔曲线时,这样的路径将如何运行?它不会被插值并失去向量功能吗?@Riduidel我认为
getPathIterator(AffineTransform)
会返回这些片段,但getPathIterator(AffineTransform,double)
不会。我猜一般来说,形状
可能会返回一个近似路径。