Rumah >Java >javaTutorial >Bagaimana untuk Memutar Imej Secara Berperingkat dalam Swing?

Bagaimana untuk Memutar Imej Secara Berperingkat dalam Swing?

Susan Sarandon
Susan Sarandonasal
2024-12-06 04:39:311007semak imbas

How to Gradually Rotate an Image in Swing?

Bagaimana untuk memutar imej secara beransur-ansur dalam Swing?

Swing menyediakan beberapa cara untuk memutar imej. Satu pendekatan ialah menggunakan kelas AffineTransform, yang membolehkan anda menggunakan penjelmaan putaran pada imej.

Untuk memutar imej secara beransur-ansur, anda boleh menggunakan Pemasa untuk mengemas kini sudut putaran dari semasa ke semasa. Berikut ialah contoh cara untuk melakukannya:

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

Kod ini mencipta JPanel yang memaparkan imej. Kaedah paintComponent menggunakan kelas AffineTransform untuk memutarkan imej di sekeliling pusatnya mengikut sudut yang ditentukan. Objek Pemasa digunakan untuk mengemas kini sudut putaran dari semasa ke semasa.

Anda boleh menambah RotateImagePanel pada aplikasi Swing anda dengan menambahkannya pada JFrame atau bekas lain. Animasi putaran akan bermula secara automatik apabila JFrame dipaparkan.

Atas ialah kandungan terperinci Bagaimana untuk Memutar Imej Secara Berperingkat dalam Swing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn