java围绕中心旋转矩形

我想围绕它的中心点旋转一个矩形,它应该保留在它应该被绘制的位置并在该空间中旋转

这是我的代码:

AffineTransform transform = new AffineTransform(); transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2); Shape transformed = transform.createTransformedShape(rectangle); g2.fill(transformed) 

旋转矩形但是在屏幕的不同部分绘制,我该如何纠正?

我没有试过这个,但似乎你没有得到正确的矩形中间。 尝试:

 AffineTransform transform = new AffineTransform(); transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2); g2.fill(transformed); 

不同之处在于,现在您将宽度添加到起始X点并将高度添加到起始Y点,因此是矩形的中间。

希望这可以帮助。

 AffineTransform transform = new AffineTransform(); transform.rotate(theta, rect.getX() + rect.width/2, rect.getY() + rect.height/2); AffineTransform old = g2.getTransform(); g2.transform(transform); // draw your rectangle here... g2.setTransfrom(old); 

如果这样做,可以绘制更高级的矩形。 例如,使用渐变填充或矩形内的文本。 一切都会随之旋转。