Java Swing移动java.awt.Shape

ger*_*s.b 0 java swing drawing java-2d

我们有一个显示一种地图的应用程序.这个Swing应用程序主要绘制一组java.awt.Shapes,java.awt.Graphics2D#draw(Shape)一切都很好.

现在,我必须扩展这个应用程序,以允许我们的用户编辑(移动形状)地图.但是没有translatemove方法java.awt.Shape.所以我无法改变java.awt.Point形状的位置().

我试图覆盖java.awt.Shape#getPathIterator以应用与形状位置匹配的翻译.但这很棘手,因为这个方法已经接受了我必须合并的转换,并且因为要正确PathIterator应该从那开始,(0, 0)因为它是相对于形状位置.

无论如何,这是行不通的,因为它似乎Graphics2D并不总是使用这种方法来绘制java.awt.Shape.

所以现在,我感觉有点迷茫.另一个解决方案可能是让自己绘制形状,但后来我必须重写应用程序的一部分.这不是问题,但我必须知道哪个可能是最好的解决方案:

  1. 找到一招移到一个java.awt.Shape 似乎是最好的解决方案,但我想不出如何做到这一点.

  2. 将应用程序更改为具有自绘图形状 可能很好但是我必须计算myslef contains和其他更复杂的方法.

And*_*son 6

但是没有translatemove方法java.awt.Shape.

AffineTransform.createTransformedShape(Shape),哪个:

返回由此变换转换后由Shape指定几何定义的新对象Shape.

当然,还有Graphics2D.translate(x,y)......

Graphics2D上下文的原点转换为当前坐标系中的点(x,y)...