与其旋转组件本身,不如旋转组件的 内容。
附录:在该示例中,直接在内存中
RotatableImage.getImage()创建一个图像
BufferedImage,但是您可以用来
ImageIO.read()从其他位置获取图像。
BufferedImage#createGraphics()如果要修改图像,则支持,但是您可能只想在旋转的图形上下文中作为的一部分绘制未修改的图像
paintComponent()。
附录:您正在用旋转的副本在图像上绘画;而是将图像绘制到旋转的图形上下文中:
import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.File;import javax.imageio.ImageIO;import javax.swing.Jframe;import javax.swing.JPanel;public class Test { public static void main(String args[]) throws Exception { Jframe frame = new Jframe("Rotation Test"); frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); final BufferedImage bi = ImageIO.read(new File("img/stand.jpg")); frame.add(new JPanel() { @Override public Dimension getPreferredSize() { return new Dimension(bi.getWidth(), bi.getHeight()); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2 = (Graphics2D) g; g2.rotate(Math.PI / 4, bi.getWidth() / 2, bi.getHeight() / 2); g2.drawImage(bi, 0, 0, null); } }); frame.pack(); frame.setVisible(true); }}


