旋转图象有很多方法。
1.自己写代码,一个象素一个象素地旋转。
2.利用现成的类。如AffineTransform
3.利用Rotation方法也可以。

解决方案 »

  1.   

    或者干脆找一副已经旋转了的图片,利用Timer触发调用paintComponent()
      

  2.   

    AffineTransform tr = new AffineTransform();]
    tr.rotate(Math.PI/4,img.getWidth(this)/2,img.getHeight(this)/2);
    tr.translate(300,300);
    g.drawImage(img, tr, this);
    利用矩阵的旋转,也可以。
    具体代码没有,但可以提供想素的操作代码(下面代码改变透明度)。import java.awt.*;
    import java.applet.*;
    import java.awt.geom.*;
    import java.awt.font.*;
    import java.awt.image.*;
    import java.net.URL;
    import javax.swing.*;
    public class AlphaCarton extends JFrame
    {
    public AlphaCarton()
    {
    setTitle("渐隐效果");
    setSize(200,200);
    Pic pp=new Pic();
    getContentPane().add(pp,BorderLayout.CENTER);
    show();
    Thread carton=new Thread(pp);
    carton.start();
    }
    public static void main(String[] args)
    {
    new AlphaCarton();
    }
    }
    class Pic extends JLabel implements Runnable
    {
    private BufferedImage buff;
    private BufferedImage outBuff;
    private int width;
    private int height;
    private int change;
    private boolean b=false;
    public Pic()
    {
    Toolkit kit=getToolkit();
            Image img = kit.createImage("jj.jpg");
            MediaTracker tracker = new MediaTracker(this);
            try
            {
    tracker.addImage(img, 0);
    tracker.waitForAll();
    }
    catch (Exception e)
    {
    e.printStackTrace();
            }        width = img.getWidth(this);
            height = img.getHeight(this);        buff = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
            Graphics tempGr = buff.createGraphics();
            tempGr.drawImage(img, 0, 0, this);        outBuff = new BufferedImage(width,height, BufferedImage.TYPE_INT_ARGB);
    }
    public void paint(Graphics g)
    {
    Graphics2D newG = (Graphics2D) g;
    //change=200;
    FadeImage(buff, outBuff,change);
            newG.drawImage(outBuff, 0, 0, this);
        }    public void run()
        {
    while(true)
    {
    if(!b)
    {
    change+=5;
    if(change>=255)
    {
    change=255;
    b=true;
    }
    }
    else
    {
    change-=5;
    if(change<=0)
    {
    change=0;
    b=false;
    }
    }
    repaint();
    try
    {
    Thread.currentThread().sleep(100);
    }
    catch(Exception e)
    {
    System.out.println("Thread Error");
    }
    }
    }    public void FadeImage(BufferedImage srcImage, BufferedImage destImage,int scale)
        {
    int width = srcImage.getWidth();
    int height = srcImage.getHeight();
    int alpha=0; int oldpix = 0;
    int newpix = 0;
    int ired;
    int igreen;
    int iblue;        for (int i=0; i < height; i++)
            {
    for (int j=0; j < width; j++)
    { oldpix = srcImage.getRGB(j, i);
    alpha=(oldpix>>24)&255;
    ired=(oldpix>>16)&255;
    igreen=(oldpix>>8)&255;
    iblue=oldpix&255; alpha=alpha-scale;
    if (alpha<0)
    {
    alpha=0;
    }
    newpix=(alpha<<24)+(ired<<16)+(igreen<<8)+iblue;
                    destImage.setRGB(j, i, newpix);
                }
            }
        }
    }