2012-01-10 151 views
6

我想围绕其中心点旋转矩形,它应该留在地方,它应该可以得出,并在这个空间java的旋转矩形围绕中心

旋转,这是我的代码:

AffineTransform transform = new AffineTransform(); 

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

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

回答

12

我还没有试过这个,但看起来你没有得到正确的矩形中间。尝试:

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

是的,就是这样。 +1 – 2012-01-10 17:46:10

5
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); 

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