Java在中心旋转图像

时间:2012-05-16 09:25:44

标签: java image rotation center

如何在中心旋转图像? 此代码有效,但它会旋转屏幕左上角的图像:

    AffineTransform oldtrans = new AffineTransform();
    AffineTransform trans = new AffineTransform();

    trans.setToIdentity();
    trans.rotate(Math.toRadians(angle));
    trans.translate(_x-(width/2), _y-(height/2));
    g.setTransform(trans);
    g.drawImage(this.getImage(), (int)_x, (int)_y, (int)width, (int)height, null);
    trans.setToIdentity();
    g.setTransform(oldtrans);

请帮助!!!

2 个答案:

答案 0 :(得分:7)

你应该在rotate()调用中再给出两个参数:

affineTransform.rotate(Math.toRadians(angle), m_imageWidth/2, m_imageHeight/2); 

答案 1 :(得分:1)

从字面上看,你已到了一半。你要做的是两个翻译。有点像:

  1. 将图像转换为中心(tanslate(x-width / 2,y-width / 2)。
  2. 按角度弧度旋转图像(就像你一样)。
  3. 将图像翻译回原始位置(tanslate(x + width / 2,y + width / 2)。
  4. 希望这适合你。