java поворачивает прямоугольник вокруг центра
Я хотел бы повернуть прямоугольник вокруг его центральной точки, и он должен оставаться на том месте, где он должен быть нарисован и вращаться в этом пространстве
Это мой код:
AffineTransform transform = new AffineTransform();
transform.rotate(Math.toRadians(45),rectangle.width/2, rectangle.height/2);
Shape transformed = transform.createTransformedShape(rectangle);
g2.fill(transformed)
прямоугольник поворачивается, но он нарисован в другой части экрана, как я могу это исправить?
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, следовательно, середину прямоугольника.
надеюсь, что это помогает.
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);
Если вы сделаете это так, можно нарисовать более продвинутый прямоугольник. Например, с градиентной заливкой или текстом внутри прямоугольника. Все будет вращаться вместе с ним.