2011-03-17 78 views
3

好吧,我一直在試圖旋轉位於圖像頂部的矩形。我有一個顯示圖像的Scrollable類。我可以在圖像上繪製矩形。我的問題是在旋轉圖像時試圖旋轉矩形。矩形會丟失並放置在錯誤的位置。如何在Java中找到錨點/旋轉點?

我已經嘗試起訴Graphics2D,AffineTransform,createTransformedShape()但沒有運氣。

我現在要做的是手動旋轉矩形。我試着用下面的公式來獲得矩形點(X,Y):

double rectX = (Math.cos(Math.toRadians(90)) * (x - anchorX) - Math.sin(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

double rectY = (Math.sin(Math.toRadians(90)) * (x - anchorX) - Math.cos(Math.toRadians(90)) * (y - anchorY)) + anchorY; 

我如何才能找到使用Java的anchorX和anchorY值?我嘗試過將圖像高度降低2,但不適用於所有旋轉角度。我必須獲得JPanel的寬度和高度嗎?有沒有Java用來找到定位點的公式?

回答

1

我不知道的目標,但我看到了兩個可能的替代辦法:

  • 使用逆變換,如圖所示here

  • 將正立的圖像和矩形渲染成BufferedImage並旋轉合成圖像,如here所示。

1

如果你想讓它像一個橫跨頂部的方塊,你必須找到旅行方向的底角。如果你向右滾動,則需要右下角。