如何在Java中调整AWT多边形的大小

时间:2011-04-18 02:11:22

标签: java geometry awt polygon

Java API中是否有任何内置方法可以调整多边形的大小?

编写我自己的方法是否是一项非常简单的任务,还是已经有其他方法?

2 个答案:

答案 0 :(得分:2)

不,内置任何内容,但是,当您绘制多边形时,可以使用应用的变换矩阵绘制多边形,该矩阵可以为您缩放多边形。 (或旋转,歪斜等)。

Graphics2D.setTransform(变换);

让我们假设你在JPanel中绘制多边形,并且已经覆盖了JPanel的paintComponent方法。将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方法中设置转换矩阵,但我在这里做了如何设置它。

另请注意,这将移动多边形,您可能希望将其应用于变换:

  • 添加翻译以将多边形移动到原点
  • 添加比例
  • 添加翻译以将多边形移回原始位置
以这种方式,对象不会移动它只是缩放。

答案 1 :(得分:0)

是的,AffineTransform.createTransformedShape(Shape)会创建任意Shape的转化副本(可能是PolygonPath2D。)