ホームページ > Java > &#&チュートリアル > Swing で画像を徐々に回転させるにはどうすればよいですか?

Swing で画像を徐々に回転させるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-06 04:39:31
オリジナル
1031 人が閲覧しました

How to Gradually Rotate an Image in Swing?

Swing で画像を徐々に回転するにはどうすればよいですか?

Swing には、画像を回転するいくつかの方法が用意されています。 1 つの方法は、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 が表示されると、回転アニメーションが自動的に開始されます。

以上がSwing で画像を徐々に回転させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート