2012-05-16 136 views
2

如何在中心旋轉圖像? 此代碼的工作,但它在屏幕的左上角旋轉圖像:Java在中心旋轉圖像

AffineTransform oldtrans = new AffineTransform(); 
    AffineTransform trans = new AffineTransform(); 

    trans.setToIdentity(); 
    trans.rotate(Math.toRadians(angle)); 
    trans.translate(_x-(width/2), _y-(height/2)); 
    g.setTransform(trans); 
    g.drawImage(this.getImage(), (int)_x, (int)_y, (int)width, (int)height, null); 
    trans.setToIdentity(); 
    g.setTransform(oldtrans); 

請幫助!

回答

7

你應該給另外兩個參數在rotate()調用:

affineTransform.rotate(Math.toRadians(angle), m_imageWidth/2, m_imageHeight/2); 
+0

我忘了那個......這應該比我提出的單獨翻譯更快(但它本質上是一回事)。代碼太少(+1)。 –

+0

Wooohoo!有效!非常感謝! – Narayan

1

從字面上看,你已經走到了一半。你必須做的是兩個翻譯。沿着線的東西:

  1. 轉換圖像到其中心(tanslate(X-寬/ 2,Y-寬度/ 2)
  2. 由角弧度旋轉圖像(像你有)
  3. 轉換的圖像恢復到原來的位置(tanslate(X +寬/ 2,Y +寬/ 2)。

希望這對你的作品。