Heim >Java >javaLernprogramm >Wie kann man ein Bild schrittweise im Swing-Modus drehen?
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!