Maison >Java >javaDidacticiel >Comment faire pivoter progressivement une image dans Swing ?

Comment faire pivoter progressivement une image dans Swing ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-06 04:39:311007parcourir

How to Gradually Rotate an Image in Swing?

Comment faire pivoter une image progressivement dans Swing ?

Swing propose plusieurs façons de faire pivoter une image. Une approche consiste à utiliser la classe AffineTransform, qui vous permet d'appliquer une transformation de rotation à une image.

Pour faire pivoter une image progressivement, vous pouvez utiliser une minuterie pour mettre à jour l'angle de rotation au fil du temps. Voici un exemple de la façon de procéder :

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();
    }
}

Ce code crée un JPanel qui affiche une image. La méthode paintComponent utilise la classe AffineTransform pour faire pivoter l'image autour de son centre selon l'angle spécifié. L'objet Timer est utilisé pour mettre à jour l'angle de rotation au fil du temps.

Vous pouvez ajouter le RotateImagePanel à votre application Swing en l'ajoutant à un JFrame ou à un autre conteneur. L'animation de rotation démarrera automatiquement lorsque le JFrame sera affiché.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn