请问:Graphics2D的drawImage()方法能不能把图片翻转后在画到Graphics上???????
类似J2ME里的manipulation参数
我想把一个图片根据我的参数draw成不同的方向。
但我只用1个方向的图片。
能不能用一个图片分别draw成各个方向,旋转90度,180度,270度???
谢谢!
^^

解决方案 »

  1.   

    可以旋转坐标系。
    rotate, 参数是弧度
      

  2.   

    忘了,一定还需要转换坐标系
    translate方法
      

  3.   

    谢谢!搞定!
     import java.awt.*; 
    import java.awt.event.*; 
    import java.awt.geom.*; 
    import java.util.*; 
    import javax.swing.*; public class TransformTest 
    {  public static void main(String[] args) 
       {  JFrame frame = new TransformTestFrame(); 
          frame.show(); 
       } 
    } class TransformTestFrame extends JFrame 
       implements ActionListener 
    {  public TransformTestFrame() 
       {  setTitle("TransformTest"); 
          setSize(400, 400); 
          addWindowListener(new WindowAdapter() 
             {  public void windowClosing(WindowEvent e) 
                {  System.exit(0); 
                } 
             } );       Container contentPane = getContentPane(); 
          canvas = new TransformPanel(); 
          contentPane.add(canvas, "Center");       JPanel buttonPanel = new JPanel(); 
          ButtonGroup group = new ButtonGroup();       rotateButton = new JRadioButton("Rotate", true); 
          buttonPanel.add(rotateButton); 
          group.add(rotateButton); 
          rotateButton.addActionListener(this);       translateButton = new JRadioButton("Translate", false); 
          buttonPanel.add(translateButton); 
          group.add(translateButton); 
          translateButton.addActionListener(this);       scaleButton = new JRadioButton("Scale", false); 
          buttonPanel.add(scaleButton); 
          group.add(scaleButton); 
          scaleButton.addActionListener(this);       shearButton = new JRadioButton("Shear", false); 
          buttonPanel.add(shearButton); 
          group.add(shearButton); 
          shearButton.addActionListener(this);       contentPane.add(buttonPanel, "North"); 
       }    public void actionPerformed(ActionEvent event) 
       {  Object source = event.getSource(); 
          if (source == rotateButton) canvas.setRotate(); 
          else if (source == translateButton) canvas.setTranslate(); 
          else if (source == scaleButton) canvas.setScale(); 
          else if (source == shearButton) canvas.setShear(); 
       }    private TransformPanel canvas; 
       private JRadioButton rotateButton; 
       private JRadioButton translateButton; 
       private JRadioButton scaleButton; 
       private JRadioButton shearButton; 
    } class TransformPanel extends JPanel 
    {  public TransformPanel() 
       {  img=new ImageIcon("antialiased.png").getImage(); 
          t = new AffineTransform(); 
          setRotate(); 
       }    public void paintComponent(Graphics g) 
       {  super.paintComponent(g); 
          Graphics2D g2 = (Graphics2D)g; 
          g2.drawImage(img,0,0,null);//画原图 
          g2.translate(getWidth() / 2, getHeight() / 2);//平移坐标轴,将原点移到组件中心 
          g2.transform(t);//设置仿射变换 
             /* we don't use setTransform because we want 
                to compose with the current translation 
             */ 
          g2.drawImage(img,-50,-50,null);//在新坐标系中画图像 
       }    public void setRotate() 
       {  t.setToRotation(Math.toRadians(60));//旋转 
          repaint(); 
       }    public void setTranslate() 
       {  t.setToTranslation(60, 15);//平移 
          repaint(); 
       }    public void setScale() 
       {  t.setToScale(-1, 1);//翻转图像 
          repaint(); 
       }    public void setShear() 
       {  t.setToShear(-0.2, 2);//剪切 
          repaint(); 
       } 
         
       private Image img; 
       private AffineTransform t; 

    http://www.java3z.com/cwbwebhome/article/article5a/537.html?id=153