java swing 实现图像360度对折线旋转动画
时间: 2023-12-08 17:06:17 浏览: 98
Java Swing 可以使用 Timer 和 AffineTransform 类来实现图像360度对折线旋转动画。Timer 可以用于定时器任务的调度,AffineTransform 可以用于在 2D 空间中进行图形变换。
以下是一个简单的例子,展示了如何在 Java Swing 中实现图像360度对折线旋转动画:
``` java
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
public class RotatingLine extends JPanel {
private BufferedImage image;
private Timer timer;
private double angle;
public RotatingLine() {
// 创建一个 BufferedImage 对象,用于绘制图像
image = new BufferedImage(300, 300, BufferedImage.TYPE_INT_RGB);
// 创建一个定时器,每 50 毫秒更新一次图像
timer = new Timer(50, e -> {
angle += Math.PI / 18; // 每次旋转 10 度
repaint();
});
timer.start();
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
// 获取 BufferedImage 对象的 Graphics2D 对象
Graphics2D img2d = image.createGraphics();
// 定义折线的起点和终点
int x1 = 50;
int y1 = 50;
int x2 = 150;
int y2 = 150;
// 在起点和终点之间绘制折线
Line2D line = new Line2D.Double(x1, y1, x2, y2);
img2d.draw(line);
// 创建一个 AffineTransform 对象,用于旋转图像
AffineTransform transform = new AffineTransform();
transform.rotate(angle, x1, y1);
// 在旋转后的坐标系下重新绘制折线
g2d.drawImage(image, transform, null);
}
public static void main(String[] args) {
JFrame frame = new JFrame("Rotating Line");
frame.add(new RotatingLine());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
```
这个例子中,我们首先创建一个 BufferedImage 对象,并在其中绘制了一个折线。然后,我们在 paintComponent() 方法中使用 AffineTransform 类的 rotate() 方法来旋转图像。每次更新图像时,我们都将角度增加 10 度,以实现图像的连续旋转。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)