繁体   English   中英

使用Java递归方法绘制正方形

[英]drawing squares using a recursive method with java

我试图编写一个绘制主正方形的小程序,然后使用递归方法在主正方形的角上绘制较小的正方形。 我真的很困惑如何去做。 我已经画出了正方形,其他正方形都在其角上,但是我需要递归地执行此过程,这就是我迷路的地方。 我需要设置最小边长,以便递归方法知道何时停止。 这是我的代码。

 import javax.swing.JApplet;

 import java.awt.*;
public class LabC extends JApplet
{
    public void paint(Graphics g)
    {
    g.drawRect(50, 100, 100, 100);
    g.drawRect(25, 75, 50, 50);
    g.drawRect(125, 75, 50, 50);
    g.drawRect(125, 175, 50, 50);
    g.drawRect(25, 175, 50, 50);


}
}

我认为这或多或少是您在寻找什么

    public static class LabC extends JLabel {

    public void paintRecursiveWraper(Graphics g, int minW, int minH, int x, int y, int w, int h) {
        g.drawRect(x, y, w, h);
        paintRecusive(g, minW, minH, x, y, w, h);
    }

    public void paintRecusive(Graphics g, int minW, int minH, int x, int y, int w, int h) {
        if (h <= minH || w <= minW) {
            return;
        }

        int newW, newH;
        int newX, newY;
        newW = (int) (w * scaleFactor);
        newH = (int) (h * scaleFactor);

        // Bot Left Square
        newX = x;
        newY = y;
        g.drawRect(newX, newY, newW, newH);
        paintRecusive(g, minW, minH, newX, newY, newW, newH);
        // Bot Right Square
        newX = (int) (x + w * (1 - scaleFactor));
        newY = y;
        g.drawRect(newX, newY, newW, newH);
        paintRecusive(g, minW, minH, newX, newY, newW, newH);
        // Top Left Square
        newX = x;
        newY = (int) (y + h * (1 - scaleFactor));
        g.drawRect(newX, newY, newW, newH);
        paintRecusive(g, minW, minH, newX, newY, newW, newH);
        // Top Right Square
        newX = (int) (x + w * (1 - scaleFactor));
        newY = (int) (y + h * (1 - scaleFactor));
        g.drawRect(newX, newY, newW, newH);
        paintRecusive(g, minW, minH, newX, newY, newW, newH);
    }

    public void paint(Graphics g) {
        paintRecursiveWraper(g, 10, 10, 0, 0, 1000, 1000);

    }
}

scaleFactor必须介于0和1之间

编辑*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM