Drehen JLabel oder ImageIcon auf Java-Swing

zunächst, dies ist die erste Woche, dass ich die Schaukel, dann sorry, wenn meine Frage ist zu offensichtlich. Auch ich brauche Lösungen, die die standard-java-Bibliotheken, da diese für die Hausaufgaben, und ich bin nicht erlaubt die Verwendung von Fremd-Bibliotheken.

Ich bin mit JLabel mit ImageIcon anzeigen von Bildern auf einem JFrame. Ich möchte jetzt drehen Sie das Bild auf dem Bildschirm, um beliebige Winkel. Ich habe etwas gefunden über Graphics2D, aber ich finde nicht den Weg das zu tun.

Da Lösungen, die ich gefunden habe funktionieren nicht oder ich Sie nicht verstehen, ich bin daran interessiert, eine Lösung drehen Sie das ImageIcon oder das JLabel. Da ich die Positionierung des Bildes zu tun setBounds auf dem JLabel, drehen Sie das JLabel wird eine bessere Lösung wie ich finde (auf diese Weise bin ich nicht gezwungen, zu sparen, das ImageIcon-Objekt auch).

Danke für Eure Aufmerksamkeit und sorry für mein schlechtes Englisch.

Bearbeiten...
Um das Bild im Bildschirm ich die nächsten:

JFrame frame = new JFrame("Something");
frame.setLayout(new FlowLayout()); //for example
JPanel panel = new JPanel();
panel.setLayout(null);

ImageIcon playerSprite = new ImageIcon("rute/to/file.png");
JLabel player = new JLabel(playerSprite);

panel.add(player);
player.setBounds(10,10,36,52); //for example

frame.getContentPane().add(panel);
frame.setVisible(true);

Fortsetzen, wie kann ich drehen Sie das IconImage oder das JLabel. Ich kann verwenden eine andere Methode zum anzeigen des Bildes, wenn Sie denken, dass ist besser. Wenn die Lösung verwenden Graphics2D, wie ich sehe, werde ich schätzen eine Lösung zu kommen, um ein Objekt dieser Klasse einer späteren Rückkehr das gedrehte Bild in ein ImageIcon, weil wenn ich es versuchen...

ImageIcon imagePlayer = new ImageIcon("img/stand.png");
Image image = imagePlayer.getImage();
Graphics2D g = (Graphics2D)image.getGraphics();

Zeitpunkt der Ausführung, die Antwort ist...

Exception in thread "main" java.lang.UnsupportedOperationException: getGraphics() not valid for images created with createImage(producer)

2th edition...
Jetzt arbeite ich mit diesem code. Das Bild dreht sich, aber die alten nicht gedrehte Bild bleibt auf dem Bildschirm unter dem neuen. Setzen Sie ein png-Bild mit dem Namen stehen.png auf dem selben Verzeichnis, und Sie werden es sehen.

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Math;
public class Test {
    public static void main(String args[]) throws Exception {    
        try {
            JFrame frame = new JFrame("Rotation Test");
            frame.setBounds(10,10,1008,756);

            BufferedImage bi = ImageIO.read(new File("stand.png"));
            Graphics2D g = (Graphics2D)bi.getGraphics();
            g.rotate(Math.toRadians(45),26,26);
            g.drawImage(bi, 0, 0, null);
            JLabel player = new JLabel(new ImageIcon(bi));
            frame.getContentPane().add(player);

            player.setBounds(0,0,100,100);
            frame.setVisible(true);
        } catch (IOException ex) {
            System.out.println("Exception");
        }
    }
}
  • +1 für eine kompilierbare Beispiel; als übung versuchen, indem Sie es komplett mit meinem Beispiel RotatableImage.getImage() oder @camickr ist Rotated Icon.
InformationsquelleAutor dgnin | 2010-11-26
Schreibe einen Kommentar