Как изменить размер многоугольника AWT в Java - PullRequest
1 голос
/ 18 апреля 2011

Существуют ли какие-либо встроенные методы в Java API, которые позволили бы мне изменить размер многоугольника?

Было бы довольно простой задачей написать свой собственный метод, или уже созданы какие-либо другие?

Ответы [ 2 ]

2 голосов
/ 18 апреля 2011

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

см

Graphics2D.setTransform (преобразование);

Предположим, вы рисуете многоугольник в JPanel, и вы переопределили метод paintComponent в JPanel. Приведите объект Graphics к объекту Graphics2D и используйте преобразования, чтобы масштабировать его соответствующим образом:

public void paintComponent(Graphic g) {

     Graphics2D g2d = (Graphics2D) g;
     AffineTransform saveTransform = g2d.getTransform();

     try {
         AffineTransform scaleMatrix = new AffineTransform();
         scaleMatrix.scale(1.5, 1.5);
         //or whatever you want

         g2d.setTransform(scaleMatrix);
         g2d.drawPolygon(myPolygon);
     } finally {
         g2d.setTransform(saveTransform);
     }
}

Скорее всего, вы можете установить матрицу преобразования в другом месте (один раз), а не каждый раз в методе paintComponent, но я сделал это здесь, чтобы показать, как это сделать.

Также обратите внимание, что это переместит многоугольник, вы, вероятно, захотите применить это к преобразованию:

  • добавить перевод для перемещения многоугольника в начало координат
  • добавить шкалу
  • добавить перевод, чтобы переместить многоугольник обратно в исходное положение

Таким образом, объект не перемещается, он просто масштабируется.

0 голосов
/ 18 апреля 2011

Да, <a href="http://download.oracle.com/javase/6/docs/api/java/awt/geom/AffineTransform.html#createTransformedShape%28java.awt.Shape%29" rel="nofollow">AffineTransform.createTransformedShape(Shape)</a> создаст преобразованную копию любого Shape (который может быть Polygon или Path2D.)

...