2011-11-27 29 views
0

我一直在查找大量的例子,每次我嘗試,我的圖像變得偏移,也沒有按照我所尋找的程度旋轉。使用java,我怎樣才能讓一個方法在一個BufferedImage中,旋轉它,並返回一個BufferedImage(具有正確的寬度/高度)

我有一個類擴展JPanel,並繪製圖像。這個JPanel然後被放入我的JFrame中。我需要一個方法,當我點擊一個按鈕時,可以使用JPanel的圖像,旋轉它並返回(使用新的高度和寬度)。 - 然後我可以讓JPanel使用新圖像重新繪製,並且它應該旋轉。

如果有人能夠幫助我舉一個例子,旋轉90度,並返回現在高度=舊寬度,寬度=舊高度,這將是驚人的!

感謝,

+2

@Getah似乎已經爲您提供了一個答案。記住一些事情。旋轉意味着一個點旋轉。例如,如果你想旋轉中心。您移動形狀以使中心位於0,0,旋轉它並將其移回,以使中心位於原來的位置。 –

+2

另請參閱此[答案](http://stackoverflow.com/q/3420651/230513)。 – trashgod

+1

*「每次嘗試」*向我們展示一次嘗試,形式爲[SSCCE](http://sscce.org/)。 –

回答

2

給你

Image rotatedImage = new BufferedImage(imageToRotate.getHeight(null), imageToRotate.getWidth(null), BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2d = (Graphics2D) rotatedImage.getGraphics(); 
g2d.rotate(Math.toRadians(90.0)); 
g2d.drawImage(imageToRotate, 0, -rotatedImage.getWidth(null), null); 
g2d.dispose(); 
+0

謝謝Jan,恐怕這是給我準確的結果,我一直得到...圖像旋轉了大約45度,並關閉左下角的頁面。看起來中間現在是jpane的左下角,並且已經順時針旋轉了45度。 :S – ThePerson

+3

另請考慮['旋轉(double theta,double x,double y)'](http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html#rotate%28double ,%20double,%20double%29)和'Math.PI/2'。 – trashgod

相關問題