Java 利用仿射变换旋转多边形

Java 利用仿射变换旋转多边形,java,polygon,Java,Polygon,我目前正在尝试使用仿射变换类旋转多边形。使用“旋转”方法,多边形的图形表示会更新,但多边形的边界框不会更新。除了更新多边形的坐标外,如何旋转多边形?创建新形状,而不是在绘制多边形时仅旋转多边形。例如: Polygon shape = new Polygon(); shape.addPoint(...); .... Rectangle bounds = shape.getBounds(); AffineTransform transform = new AffineTransform(); tra

我目前正在尝试使用仿射变换类旋转多边形。使用“旋转”方法,多边形的图形表示会更新,但多边形的边界框不会更新。除了更新多边形的坐标外,如何旋转多边形?

创建新形状,而不是在绘制多边形时仅旋转多边形。例如:

Polygon shape = new Polygon();
shape.addPoint(...);
....
Rectangle bounds = shape.getBounds();
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(angle), bounds.width / 2, bounds.height / 2);

Path2D path = (shape instanceof Path2D) ? (Path2D)shape : new GeneralPath(shape);
Shape rotated = path.createTransformedShape( transform );
System.out.println(rotated.getBounds());

创建新形状,而不是在绘制多边形时仅旋转多边形。例如:

Polygon shape = new Polygon();
shape.addPoint(...);
....
Rectangle bounds = shape.getBounds();
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(angle), bounds.width / 2, bounds.height / 2);

Path2D path = (shape instanceof Path2D) ? (Path2D)shape : new GeneralPath(shape);
Shape rotated = path.createTransformedShape( transform );
System.out.println(rotated.getBounds());

多边形的“边界框”是什么意思?是否将其存储为多边形的一部分?多边形的“边界框”是什么意思?您是否将其存储为多边形的一部分?创建新形状似乎很有效,并为我提供了更新的坐标。但是我不太明白路径部分。。。多边形怎么可能是Path2d的实例?它不是,这就是代码进行检查的原因。在这种情况下,多边形首先转换为通用路径,因此可以旋转。(我刚刚更新了代码,所以使用了“shape”变量,而不是我原来使用的“polygon”变量。希望这更有意义)创建新的形状似乎可行,给了我更新的坐标。但是我不太明白路径部分。。。多边形怎么可能是Path2d的实例?它不是,这就是代码进行检查的原因。在这种情况下,多边形首先转换为通用路径,因此可以旋转。(我刚刚更新了代码,使用了“shape”变量,而不是我原来使用的“polygon”变量。希望这更有意义)