Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中调整AWT多边形的大小_Java_Geometry_Awt_Polygon - Fatal编程技术网

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

如何在Java中调整AWT多边形的大小,java,geometry,awt,polygon,Java,Geometry,Awt,Polygon,Java API中是否有任何内置方法允许我调整多边形的大小 写我自己的方法是一件很简单的任务,还是已经有其他方法了?不,没有内置任何东西,尽管当你绘制多边形时,你可以使用一个变换矩阵来绘制多边形,它可以为你缩放多边形。(或旋转、倾斜等) 看 图形2d.设置转换(转换) 假设您正在JPanel中绘制多边形,并且已经覆盖了JPanel的paintComponent方法。将图形对象强制转换为Graphics2D对象,并根据需要使用变换对其进行缩放: public void paintComponent

Java API中是否有任何内置方法允许我调整多边形的大小


写我自己的方法是一件很简单的任务,还是已经有其他方法了?

不,没有内置任何东西,尽管当你绘制多边形时,你可以使用一个变换矩阵来绘制多边形,它可以为你缩放多边形。(或旋转、倾斜等)

图形2d.设置转换(转换)

假设您正在JPanel中绘制多边形,并且已经覆盖了JPanel的paintComponent方法。将图形对象强制转换为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方法中每次设置转换矩阵,但我在这里做的是演示如何进行设置

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

  • 添加平移以将多边形移动到原点
  • 加一个刻度
  • 添加平移以将多边形移回原始位置

通过这种方式,对象不会移动,只会进行缩放。

是的,
将创建任何
形状的变换副本(可能是
多边形
路径2D

我认为这可能更适合我的问题,因为我希望缩放形状以适应简单2D游戏的不同屏幕大小。这是个好主意吗?您可以添加一些关于setTransform方法如何工作的更多信息吗?