java rotate rectangle around the center
我想围绕其中心点旋转一个矩形,并且该矩形应保留在应该绘制的位置并在该空间中旋转
这是我的代码:
1 2 3 4 5 | AffineTransform transform = new AffineTransform(); transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2); Shape transformed = transform.createTransformedShape(rectangle); g2.fill(transformed) |
矩形已旋转,但在屏幕的不同部分绘制,如何纠正呢?
我还没有尝试过,但是似乎您没有获得矩形的正确中间位置。尝试:
1 2 3 | AffineTransform transform = new AffineTransform(); transform.rotate(Math.toRadians(45), rectangle.getX() + rectangle.width/2, rectangle.getY() + rectangle.height/2); g2.fill(transformed); |
现在的区别是您将宽度添加到起始X点,并将高度添加到起始Y点,即矩形的中间。
希望这会有所帮助。
1 2 3 4 5 6 7 8 | 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); |
如果您这样做,则可以绘制一个更高级的矩形。例如,使用渐变填充或矩形内的文本。一切都会随之旋转。