我不明白在这一行中乘以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);
}
}
答案 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%)