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 java.awt.geom.Rectangle2D;import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Testxz {
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.getContentPane().add(new RotatePanel(), BorderLayout.CENTER);
jf.setPreferredSize(new Dimension(100, 200));
jf.pack();
jf.setVisible(true);
}
}class RotatePanel extends JPanel {
public void init() {
setLayout(new BorderLayout());
} // 重写绘制图像方法
String url = "e:/1x.jpg";
Image img = new ImageIcon(url).getImage();
int width = img.getWidth(null);
int height = img.getHeight(null); public void paintComponent(Graphics g) {
Graphics2D g2D = (Graphics2D) g; g2D.fillRect(0, 0, getSize().width, getSize().height);
AffineTransform trans = new AffineTransform();
trans.setToIdentity();
// 坐标变换 trans.translate(width / 2, height / 2);

                  trans.scale(0.5, 0.5);//这里参数可以输入其他数字,小于1表示缩小图片,大于1表示放大图片
trans.rotate(Math.toRadians(360));//360表示角度,你们可以输入90,180,看看

trans.translate(-width / 2, -height / 2); g2D.drawImage(img, trans, this); }}这段代码可以运行的,只要修改下图片路径即可
大家运行下,看看是不是觉得不对劲哦?主要是红色代码部分,分别控制放大缩小和旋转图片作用
我发现,旋转和缩小的时候,图片始终不能位于最左上方,这让我挺苦恼的,谁有办法帮我解决下哦,谢谢

解决方案 »

  1.   

    换个函数 指定下列x=0,y=0;
    public abstract void drawString(AttributedCharacterIterator iterator,
                                    int x,
                                    int y)依照 TextAttribute 类的规范应用指定迭代器的属性,呈现指定迭代器的文本。 
    首字符的基线位于用户空间中的 (x, y) 位置处。对于脚本系统(如 Hebrew 和 Arabic)中的字符,在提供的坐标位于基线上最左边字符的情况下,可以从右到左呈现字形。 
    指定者:
    类 Graphics 中的 drawString
    参数:
    iterator - 要呈现其文本的迭代器
    x - 要呈现迭代器文本处的 x 坐标
    y - 要呈现迭代器文本处的 y 坐标 
      

  2.   

    呵呵,你是不懂呀,还是没看清程序哦?你用 drawString
    画图吗?