java swing 旋转后,图片大小变化了,怎么办
package com.swing.japplet;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.geom.AffineTransform;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TestXz1 extends JPanel {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.getContentPane().add(new RotatePanel1(), BorderLayout.CENTER);
jf.setPreferredSize(new Dimension(800, 800));
jf.pack();
jf.setVisible(true);
}
}
class RotatePanel1 extends JPanel {
public void init() {
// setLayout(new BorderLayout());
}
// 重写绘制图像方法
String url = "e:/3.GIF";
Image img = new ImageIcon(url).getImage();
public void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
int width = img.getHeight(this);
int height = img.getHeight(this);
g2D.setColor(Color.BLACK);
g2D.fillRect(0, 0, getSize().height, getSize().width);
// 坐标变换
// 旋转90度
g2D.scale(1, 1); // 代替trans.scale(0.5, 0.5);
g2D.rotate(Math.toRadians(90),height / 2,width / 2);//
g2D.drawImage(img, 0, 0, this);// 0,0就是你要画的坐标
}
}
主要看红色部分,我发现运行这段代码后,图片旋转90度的倍数时候,图片大小变化了,一般都是变小了,请问,有没有办法解决哦,谢谢