【问题标题】:How to resize an AWT Polygon in Java如何在 Java 中调整 AWT 多边形的大小
【发布时间】:2011-04-18 02:11:22
【问题描述】:

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

编写我自己的方法会是一项相当简单的任务,还是已经有其他方法了?

【问题讨论】:

    标签: java geometry awt polygon


    【解决方案1】:

    不,没有任何内置功能,尽管如此,当您绘制多边形时,您可以使用可以为您缩放多边形的变换矩阵来绘制多边形。 (或旋转、倾斜等)。

    Graphics2D.setTransform(transform);

    假设您在 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 方法中设置转换矩阵,但我在这里展示了如何做到这一点。

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

    • 添加平移以将多边形移动到原点
    • 添加比例
    • 添加平移以将多边形移回原始位置

    这样,对象不会移动它只是缩放。

    【讨论】:

    • 我认为这可能更适合我的问题,因为我正在寻找缩放形状以适应简单 2D 游戏的不同屏幕尺寸。这是个好主意吗?您能否添加更多关于 setTransform 方法如何工作的信息?
    【解决方案2】:

    是的,@987654321@ 将创建任何Shape 的转换副本(可能是PolygonPath2D。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-05
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多