【发布时间】:2015-08-05 10:05:53
【问题描述】:
我们有一个显示某种地图的应用程序。这个Swing应用主要是用java.awt.Graphics2D#draw(Shape)绘制了一组java.awt.Shapes,一切都很好。
现在,我必须扩展这个应用程序以允许我们的用户编辑(移动形状)地图。但是java.awt.Shapes 上没有translate 或move 方法。所以我不能改变形状的位置(java.awt.Point)。
我试图覆盖java.awt.Shape#getPathIterator 以应用与形状位置匹配的翻译。但这很棘手,因为这个方法已经接受了我必须合并的转换,而且为了正确,PathIterator 应该从(0, 0) 开始,因为它是相对于形状位置的。
不管怎样,这行不通,因为Graphics2D似乎并不总是使用这种方法来绘制java.awt.Shape。
所以现在,我感到有些失落。另一种解决方案可能是让形状自己绘制,但随后我必须重写应用程序的一部分。这不是问题,但我必须知道哪个可能是最好的解决方案:
想办法移动
java.awt.Shape似乎是最好的解决方案,但我不知道该怎么做。将应用更改为具有自绘形状 可能很好,但我必须计算 myslef
contains和其他更复杂的方法。
【问题讨论】:
-
你检查过 AffineTransform 吗?
-
要么翻译
Graphics上下文以绘制Shape(使用AffineTransform),要么使用AffineTransform使用createTransformedShape方法翻译形状
标签: java swing drawing java-2d