Java 从给定坐标的中心绘制矩形

Java 从给定坐标的中心绘制矩形,java,netbeans,Java,Netbeans,我制作了一个程序,用户输入要绘制的矩形数量和绘制矩形的坐标。我的矩形当前绘制如下: 我想做到这一点: 这是我用来绘制矩形的代码: int povecaj_kvadrat=0; for(int x=0;x<broj_kvadrata;x++) { Rectangle2D.Float kvadrat=new Rectangle2D.Float(brojevi_koordinate[0],brojevi_koordinate[1],50+povecaj_kvadr

我制作了一个程序,用户输入要绘制的矩形数量和绘制矩形的坐标。我的矩形当前绘制如下:

我想做到这一点:

这是我用来绘制矩形的代码:

int povecaj_kvadrat=0;

    for(int x=0;x<broj_kvadrata;x++) {
        Rectangle2D.Float kvadrat=new Rectangle2D.Float(brojevi_koordinate[0],brojevi_koordinate[1],50+povecaj_kvadrat,50+povecaj_kvadrat);
        ploca.draw((kvadrat));
        povecaj_kvadrat=povecaj_kvadrat+15;
    }

      }
intpovecaj_kvadrat=0;

对于(int x=0;x,您必须考虑每个
矩形的附加大小,以及它在循环中的位置,以计算每个矩形的正确坐标

附加大小已作为变量移动(
diffSize
),以便循环可以使用其值

两次迭代之间的坐标差将是该差异大小的一半,乘以循环中位置的倒数,因为增量(x)和
矩形
大小越小,坐标越大

        int gap = 0;
        int maxNumber = 3;
        int diffSize = 20;

        int[] coordinates = { 10, 10 };

        for (int x = 0; x <= maxNumber; x++) {
            Rectangle2D.Float rectangle = new Rectangle2D.Float(
                    coordinates[0] + ((diffSize / 2) * (maxNumber - x)),
                    coordinates[1] + ((diffSize / 2) * (maxNumber - x)),
                    50 + gap, 50 + gap);
            g2d.draw((rectangle));
            gap = gap + diffSize;
        }
int-gap=0;
int maxNumber=3;
int diffSize=20;
int[]坐标={10,10};

对于(int x=0;x)来看一下如何构造
Rectangle2D.Float
。前两个参数不是矩形中心,而是左上角的点。在循环中,这个点是固定的,不会改变