2012-05-16 5 views
2

어떻게하면 이미지를 중심에서 회전시킬 수 있습니까? 이 코드는 작동하지만, 화면의 왼쪽 상단 모서리에있는 이미지를 회전 :자바가 중심에서 이미지 회전

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); 

도와주세요!

답변

7

당신은 두 개 이상의 인수를 제공해야합니다 당신의 rotate() 전화 :

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

나는 이것을 잊어 버렸다. 이것은 내가 제안한 별도의 번역이 더 빠를 것입니다. (근본적으로 똑같습니다). 적은 코드 (+1). –

+0

우후! 그것은 효과가있다! 고마워! – Narayan

1

문자 그대로 중간에 있습니다. 당신이해야 할 일은 두 가지 번역입니다. 의 라인을 따라 뭔가 :.

  1. 당신이 가지고있는 것처럼/2, y를 폭/2)
  2. 가) (각도 라디안으로 이미지를 회전 중심 (tanslate (X-폭에 이미지를 번역
  3. 을. 이
  4. 가 원래 위치로 이미지를 다시 번역 (tanslate (X + 폭/2, Y + 폭/2).

희망은 당신을 위해 작동합니다.