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.
看图后会发现,图片旋转完后,坐标是斜的,所以在添加到其它组件时,不要忘记将坐标调正,调正包涵坐标位置和倾斜角度。