Java绘画动态红色爱心
时间: 2023-10-02 17:09:33 浏览: 71
以下是使用Java绘制动态红色爱心的示例代码:
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class HeartAnimation extends JPanel implements ActionListener {
private Timer timer;
private int x, y, size;
private double angle;
public HeartAnimation() {
timer = new Timer(10, this);
x = 300;
y = 300;
size = 100;
angle = 0;
}
public void startAnimation() {
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
int[] xPoints = new int[3];
int[] yPoints = new int[3];
double r = size / 2.0;
double radian = Math.toRadians(angle);
xPoints[0] = x + (int)(r * Math.sin(radian));
yPoints[0] = y - (int)(r * Math.cos(radian));
xPoints[1] = x + (int)(r * Math.sin(radian + Math.PI));
yPoints[1] = y - (int)(r * Math.cos(radian + Math.PI));
xPoints[2] = x + (int)(size * Math.sin(radian + Math.PI/2));
yPoints[2] = y - (int)(size * Math.cos(radian + Math.PI/2));
g.fillPolygon(xPoints, yPoints, 3);
}
public void actionPerformed(ActionEvent e) {
angle += 0.1;
repaint();
}
public static void main(String[] args) {
JFrame frame = new JFrame("Heart Animation");
HeartAnimation heart = new HeartAnimation();
frame.add(heart);
frame.setSize(600, 600);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
heart.startAnimation();
}
}
```
在这个示例中,我们首先创建了一个继承自JPanel的 HeartAnimation 类,并实现了 ActionListener 接口来处理动画的更新。在构造函数中,我们初始化了计时器、爱心的位置和大小以及角度。startAnimation() 方法用于启动计时器并开始动画。在 paintComponent() 方法中,我们使用 fillPolygon() 方法来绘制三角形的爱心形状,并根据当前的角度进行旋转。在 actionPerformed() 方法中,我们每次增加一定的角度,并调用 repaint() 方法来更新界面。
最后,在 main() 方法中,我们创建了一个 JFrame 并将 HeartAnimation 实例添加到其中,然后设置窗口的大小和关闭行为,并显示窗口。最后,我们调用 startAnimation() 方法来开始动画。
阅读全文