2012-01-10 44 views
6

Tôi muốn xoay một hình chữ nhật xung quanh điểm trung tâm của nó và nó sẽ ở lại nơi mà nó được cho là được rút ra và xoay trong không gianjava xoay hình chữ nhật xung quanh trung tâm

đây là mã của tôi:

AffineTransform transform = new AffineTransform(); 

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

hình chữ nhật được xoay nhưng được vẽ ở một phần khác của màn hình, làm thế nào tôi có thể sửa lỗi này?

Trả lời

12

Tôi chưa thử điều này, nhưng có vẻ như bạn không nhận được chính xác giữa hình chữ nhật. Hãy thử:

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

Sự khác biệt bây giờ là bạn thêm chiều rộng vào điểm X bắt đầu và thêm chiều cao vào điểm Y bắt đầu, do đó giữa hình chữ nhật.

Hy vọng điều này sẽ hữu ích.

+1

Vâng, đúng vậy. +1 –

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

Nếu bạn làm như vậy, có thể vẽ hình chữ nhật cao cấp hơn. Ví dụ với tô màu gradient hoặc văn bản bên trong hình chữ nhật. Mọi thứ sẽ xoay vòng với nó.

Các vấn đề liên quan