用java写一个玫瑰花
时间: 2024-05-02 08:23:56 浏览: 21
以下是用Java代码实现绘制玫瑰花的过程:
```java
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Rose extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
int centerX = getWidth() / 2; // 获取面板宽度的一半
int centerY = getHeight() / 2; // 获取面板高度的一半
int petals = 14; // 玫瑰花瓣数量
int radius = 100; // 玫瑰花半径
int angleStep = 360 / petals; // 每个瓣的角度
int petalLength = 20; // 瓣的长度
int petalWidth = 10; // 瓣的宽度
Color petalColor = Color.RED; // 瓣的颜色
for (int i = 0; i < petals; i++) {
int angle = i * angleStep;
double angleInRadians = Math.toRadians(angle);
int petalX = centerX + (int) (radius * Math.cos(angleInRadians));
int petalY = centerY - (int) (radius * Math.sin(angleInRadians));
g.setColor(petalColor);
g.fillOval(petalX, petalY, petalWidth, petalLength);
g.fillOval(centerX - petalWidth / 2, centerY - petalLength / 2, petalWidth, petalLength);
g.fillOval(centerX - petalLength / 2, centerY - petalWidth / 2, petalLength, petalWidth);
g.fillOval(centerX - petalWidth / 2, centerY - petalLength / 2, petalWidth, petalLength);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("Rose");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new Rose());
frame.setSize(400, 400);
frame.setVisible(true);
}
}
```
代码解释:
- `paintComponent()` 方法是 `JPanel` 类的一个方法,用于在面板上绘制图形。
- `centerX` 和 `centerY` 分别是面板宽度和高度的一半,用于确定玫瑰花的中心位置。
- `petals` 是瓣的数量,`radius` 是玫瑰花的半径,`angleStep` 是每个瓣的角度,`petalLength` 和 `petalWidth` 分别是瓣的长度和宽度,`petalColor` 是瓣的颜色。
- `for` 循环用于绘制每个瓣,`angle` 是当前瓣的角度,`angleInRadians` 是将角度转换为弧度后的值,`petalX` 和 `petalY` 分别是当前瓣的起始位置。
- `g.fillOval()` 方法用于绘制瓣的形状,`g.setColor()` 方法用于设置瓣的颜色。
- `main()` 方法用于创建窗口并在其中添加面板,设置窗口大小并显示窗口。