java 图片绕中心旋转

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

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值