2013-04-01 2 views
0

В настоящее время я пытаюсь повернуть многоугольник, используя класс Affine Transform. Используя метод rotate, обновление графического представления многоугольника обновляется, но ограничивающий прямоугольник многоугольника не обновляется. Как я могу повернуть многоугольник в дополнение к обновлению его координат?Использование аффинного преобразования для поворота многоугольника

+0

Что вы подразумеваете под «ограничивающей коробкой» полигона? Вы сохраняете это как часть многоугольника? –

ответ

4

Создайте новую форму вместо того, чтобы просто поворачивать многоугольник, как ваша краска. Например:

Polygon shape = new Polygon(); 
shape.addPoint(...); 
.... 
Rectangle bounds = shape.getBounds(); 
AffineTransform transform = new AffineTransform(); 
transform.rotate(Math.toRadians(angle), bounds.width/2, bounds.height/2); 

Path2D path = (shape instanceof Path2D) ? (Path2D)shape : new GeneralPath(shape); 
Shape rotated = path.createTransformedShape(transform); 
System.out.println(rotated.getBounds()); 
+0

Создание новой формы, казалось, сработало, давая мне обновленные координаты. Я не совсем получаю часть пути, однако ... Как полигон мог быть экземпляром Path2d? –

+0

Это не так, поэтому код делает чек. В этом случае Polygon сначала преобразуется в GeneralPath, поэтому его можно вращать. (Я только что обновил код, чтобы вместо переменной «polygon», которую я изначально использовал, была использована переменная «shape». Надеюсь, это имеет смысл) – camickr

+0

Хорошо, это действительно помогает! –

Смежные вопросы