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

Comment faire pivoter progressivement une image dans Swing ?

Susan Sarandon
Libérer: 2024-12-06 04:39:31
original
1011 Les gens l'ont consulté

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();
    }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal