Java повернуть прямоугольник вокруг центра

Я хотел бы повернуть прямоугольник вокруг его центральной точки, и он должен оставаться в том месте, где он должен быть нарисован, и вращаться в этом пространстве.

это мой код:

AffineTransform transform = new AffineTransform();

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

прямоугольник поворачивается, но рисуется в другой части экрана, как это исправить?


person trs    schedule 10.01.2012    source источник


Ответы (2)


Я не пробовал это, но кажется, что вы не получаете правильную середину прямоугольника. Пытаться:

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

Разница в том, что теперь вы добавляете ширину к начальной точке X и добавляете высоту к начальной точке Y, следовательно, к середине прямоугольника.

Надеюсь это поможет.

person Dan W    schedule 10.01.2012

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

Если вы сделаете это так, можно будет нарисовать более сложный прямоугольник. Например, с градиентной заливкой или текстом внутри прямоугольника. Все будет вращаться вместе с ним.

person Beo    schedule 19.12.2012