저는 현재 회전 이미지를 Java로보고 있습니다. 일부 스프라이트를 회전해야하는 물리 시뮬레이션을 만들 예정입니다. 나는 그림을 회전시킬 수 있었지만 정확히 90도, 180도 또는 270도 회전시키지 않으면 이미지의 왼쪽 상단 모서리가 잘 리게됩니다. 나는 회전 중심에 대해 어딘가에서 (width/2, height/2)가 아닌 것을 읽었으므로 다른 매개 변수를 시도하고 거의 모든 구석을 가졌지 만 패널에 대한 이미지의 상대적 위치가 중심에서 다른 것으로 바뀌 었습니다 . 누구든지이 일을 어떻게하는지, 내가 어떻게 해결할 수 있는지 알고 있습니까?회전 이미지가 모서리를 자릅니다.
@Override
public void paintComponent(Graphics graphics)
{
Graphics2D g2d = (Graphics2D) graphics;
super.paintComponent(g2d);
double rotate = Math.toRadians(45);
double X = image.getWidth()/2;
double Y = image.getHeight()/2;
AffineTransform tx = AffineTransform.getRotateInstance(rotate, X, Y);
AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);
g2d.drawImage(op.filter(image, null), 200, 200, null);
}
:
내가 사용하는 코드는 다음과 같다 : 여기
은 세 가지 이미지 내가 무슨 말을하는지 보여주고있다
각도가 무엇이든 언급 할 가치가 있습니다. 항상 왼쪽 상단이 잘립니다.
편집 : 그래서 나는 (이미지. 회전 후에도 표시되지만 회전 전과 같은 위치에 있지 않습니다. 이것이 나에게 말하는 것은 사후 처리 된 이미지가 쓰여지는 "캔버스"가 무엇 이건간에 X/Y 축에서 이미지 자체가 커진다는 것입니다. 아마도 그림이 X/Y 축에서 얼마나 움직 였는지 알 수있는 알고리즘을 작성하여 원래 위치로 되돌릴 수 있습니다. 그러나 이것은 무언가를 "기본"으로 무언가를 회전시키는 것으로 몹시 복잡해 보입니다.