java swing 旋转后,图片大小变化了,怎么办

liujun3512159 2010-04-16 10:25:36
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度的倍数时候,图片大小变化了,一般都是变小了,请问,有没有办法解决哦,谢谢
...全文
208 4 打赏 收藏 转发到动态 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujun3512159 2010-04-16
  • 打赏
  • 举报
回复
2楼的方法应该不行的,不予考虑的
平淡面对 2010-04-16
  • 打赏
  • 举报
回复

Image img = new ImageIcon(url).getImage();


可改为:


String url = "testdata/img_test.gif";
BufferedImage img = openImage(new File(url));

public static BufferedImage openImage(File imageFile) {
BufferedImage image = null;
try {
image = ImageIO.read(imageFile);
} catch (Exception e) {
e.printStackTrace();
}

return image;
}
ZRBRZB 2010-04-16
  • 打赏
  • 举报
回复
把height 和width 改成double类型 试试呢
huntor 2010-04-16
  • 打赏
  • 举报
回复
RotatePanel1中添加
public Dimension getPreferredSize(){
return new Dimension(img.getWidth(null),img.getHeight(null)*2);
}

注释掉
jf.setPreferredSize(new Dimension(800, 800));
相关推荐

62,567

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告