Heim >Java >javaLernprogramm >Wie kann man ein Bild schrittweise im Swing-Modus drehen?

Wie kann man ein Bild schrittweise im Swing-Modus drehen?

Susan Sarandon
Susan SarandonOriginal
2024-12-06 04:39:311006Durchsuche

How to Gradually Rotate an Image in Swing?

Wie drehe ich ein Bild schrittweise in Swing?

Swing bietet mehrere Möglichkeiten, ein Bild zu drehen. Ein Ansatz besteht darin, die AffineTransform-Klasse zu verwenden, mit der Sie eine Rotationstransformation auf ein Bild anwenden können.

Um ein Bild schrittweise zu drehen, können Sie einen Timer verwenden, um den Rotationswinkel im Laufe der Zeit zu aktualisieren. Hier ist ein Beispiel dafür:

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

Dieser Code erstellt ein JPanel, das ein Bild anzeigt. Die Methode paintComponent verwendet die Klasse AffineTransform, um das Bild um den angegebenen Winkel um seinen Mittelpunkt zu drehen. Das Timer-Objekt wird verwendet, um den Drehwinkel im Laufe der Zeit zu aktualisieren.

Sie können das RotateImagePanel zu Ihrer Swing-Anwendung hinzufügen, indem Sie es einem JFrame oder einem anderen Container hinzufügen. Die Rotationsanimation startet automatisch, wenn der JFrame angezeigt wird.

Das obige ist der detaillierte Inhalt vonWie kann man ein Bild schrittweise im Swing-Modus drehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn