用Java显示风扇叶片

时间:2015-04-18 15:02:40

标签: java

我不明白在这一行中乘以0.4的重要性:

int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4)

在下面的代码中。他们如何计算

下的半径
//Displaying fan blades in Java
package graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Color;
import java.awt.Graphics;

@SuppressWarnings("serial")
class DrawFan extends JFrame {

    public DrawFan() {
        setTitle("The Four Fan Blades");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        add(new BladesPanel());
    }

    class BladesPanel extends JPanel {
        protected void paintComponent(Graphics g){
            super.paintComponent(g);

            int xCenter = getWidth() / 2;
            int yCenter = getHeight() / 2;
            int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4);

            int x = xCenter - radius;
            int y = yCenter - radius;

            g.fillArc(x, y, 2 * radius, 2 * radius, 0, 30);
            g.fillArc(x, y, 2 * radius, 2 * radius, 90, 30);
            g.fillArc(x, y, 2 * radius, 2 * radius, 180, 30);
            g.fillArc(x, y, 2 * radius, 2 * radius, 270, 30);
        }
    }

    public static void main(String[] args) {
        DrawArcs2 fanBlades = new DrawArcs2();
        fanBlades.setSize(300,300);
        fanBlades.setVisible(true);

    }

}

1 个答案:

答案 0 :(得分:4)

在这一行:

int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4);

他们首先获得JPanel中更大的数字:此部分的宽度或高度(Math.min(getWidth(), getHeight())

想象一下,身高是400,宽度是300.将选择400。现在,您想在这个400宽的矩形内画一个圆圈。为了适应你的圆圈你需要至少1/2 400点。这与400 * 0.5相同。为了更好地适应内部的圆圈,他们选择乘以0.4(或更高的宽度/高度的40%)