首页 >Java >java教程 >如何在 Swing 中逐渐旋转图像?

如何在 Swing 中逐渐旋转图像?

Susan Sarandon
Susan Sarandon原创
2024-12-06 04:39:311006浏览

How to Gradually Rotate an Image in Swing?

如何在 Swing 中逐渐旋转图像?

Swing 提供了多种旋转图像的方法。一种方法是使用 AffineTransform 类,它允许您对图像应用旋转变换。

要逐渐旋转图像,您可以使用计时器随时间更新旋转角度。以下是如何执行此操作的示例:

import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;

import javax.swing.JPanel;
import javax.swing.Timer;

public class RotateImagePanel extends JPanel implements ActionListener {

    private Image image;
    private AffineTransform transform;
    private double angle;
    private Timer timer;

    public RotateImagePanel(Image image) {
        this.image = image;
        transform = new AffineTransform();
        angle = 0;
        timer = new Timer(100, this);
        timer.start();
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2 = (Graphics2D) g;
        g2.translate(getWidth() / 2, getHeight() / 2);
        g2.rotate(angle, image.getWidth(null) / 2, image.getHeight(null) / 2);
        g2.drawImage(image, transform, null);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        angle += Math.PI / 100;
        repaint();
    }
}

此代码创建一个显示图像的 JPanel。 PaintComponent 方法使用 AffineTransform 类将图像绕其中心旋转指定的角度。 Timer 对象用于随时间更新旋转角度。

您可以通过将 RotateImagePanel 添加到 JFrame 或其他容器来将其添加到 Swing 应用程序中。当 JFrame 显示时,旋转动画将自动开始。

以上是如何在 Swing 中逐渐旋转图像?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn