java 圖片繞中心旋轉
阿新 • • 發佈:2019-01-28
public abstract void rotate(double theta,
double x,
double y)將當前的 Graphics2D Transform 與平移後的旋轉轉換連線。
以下作廢!!!!!!!!!
555555555555555555555
用rotate()旋轉圖片時發現旋轉中心是視窗左上角,但該種旋轉不美觀且不實用。看過書後,發現可以使用translate()函式解決該問題。
效果如下:
程式碼如下:
/**
* imageX,imagesY 圖片位置
* imageW,imageH 圖片大小
* angel 旋轉角度
* rotateX,rotateY 旋轉中心
* 圖片旋轉360°後返回true
*/
protected boolean draw(Graphics g)
{
change();
Graphics2D g2 = (Graphics2D) g;
g2.translate(rotateX, rotateY);
g2.rotate(angle);
g2.translate(-rotateX,-rotateY);
g2.drawImage(image,imageX,imageY,imageW,imageH,null);
if(angle == 0)
return true;
else
return false;
}
思路是:先將座標原點挪到圖片中心,在旋轉圖片,然後再把座標原點移到視窗左上角(暫且稱其為(0,0)點吧),最後繪製圖片。
即A->B->C->D.
看圖後會發現,圖片旋轉完後,座標是斜的,所以在新增到其它元件時,不要忘記將座標調正,調正包涵座標位置和傾斜角度。