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

时间:2017-01-16 14:50:46

标签: java netbeans

我做了一个程序,用户输入要绘制的矩形数和绘制矩形的坐标。我的矩形目前是这样绘制的:

link http://image.prntscr.com/image/0e4d267fae7240138e8f0018dbcbb044.png

我希望实现这一目标:

link http://image.prntscr.com/image/dfd134efe9b34dd7ac0a2795531cf763.png

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

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;
    }

      }

如何设置矩形的坐标,以便像第二张图像一样绘制它们?

1 个答案:

答案 0 :(得分:0)

您必须考虑每个Rectangle的额外大小及其在循环中的位置,以计算每个矩形的正确坐标。

附加大小已作为变量(diffSize)移动,因此您的循环可以使用其值。

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

        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;
        }

请注意,如果diffSize为奇数,我不确定行为是否正确(因为(diffSize / 2)将向下舍入到最接近的int值),所以我会保持一个偶数值diffSize

相关问题