>Java >java지도 시간 >스윙에서 이미지를 점진적으로 회전하는 방법은 무엇입니까?

스윙에서 이미지를 점진적으로 회전하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-06 04:39:311007검색

How to Gradually Rotate an Image in Swing?

Swing에서 이미지를 점진적으로 회전하는 방법은 무엇입니까?

Swing에서는 이미지를 회전하는 여러 가지 방법을 제공합니다. 한 가지 접근 방식은 이미지에 회전 변환을 적용할 수 있는 AffineTransform 클래스를 사용하는 것입니다.

이미지를 점진적으로 회전하려면 타이머를 사용하여 시간 경과에 따라 회전 각도를 업데이트할 수 있습니다. 이를 수행하는 방법의 예는 다음과 같습니다.

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

이 코드는 이미지를 표시하는 JPanel을 생성합니다. PaintComponent 메소드는 AffineTransform 클래스를 사용하여 지정된 각도만큼 중심을 중심으로 이미지를 회전합니다. Timer 개체는 시간이 지남에 따라 회전 각도를 업데이트하는 데 사용됩니다.

RotateImagePanel을 JFrame이나 다른 컨테이너에 추가하여 Swing 애플리케이션에 추가할 수 있습니다. JFrame이 표시되면 회전 애니메이션이 자동으로 시작됩니다.

위 내용은 스윙에서 이미지를 점진적으로 회전하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.