2011-11-27 3 views
0

시도 할 때마다 많은 이미지를 찾고 있습니다. 이미지가 오프셋됩니다. , 그리고 내가 찾고있는 정도까지 회전하지도 않는다.자바를 사용하여 BufferedImage를 가져 와서 회전하고 올바른 너비/높이로 BufferedImage를 반환하는 방법을 만들 수 있습니까

JPanel을 확장하고 이미지를 그립니다. 이 JPanel은 JFrame에 저장됩니다. 단추를 클릭하면 JPanel의 이미지를 가져 와서 회전시키고 새 높이와 너비로 반환 할 수있는 메서드가 필요합니다. 그런 다음 JPanel에 새 이미지를 사용하여 다시 칠하도록 요청할 수 있으며 회전해야합니다.

예를 들어 90도 회전하고 높이 = 이전 너비, 너비 = 이전 높이로 되돌아 가면 큰 도움이 될 수 있습니다.

감사합니다,

+2

@Getah는 대답을 제공 한 것입니다. 마음 속에 떠오르는 무엇인가. 회전은 점을 중심으로 회전하는 것을 의미합니다. 예를 들어, 중심을 중심으로 회전하려는 경우 중심이 0,0에 오도록 모양을 이동하고 회전 한 다음 다시 중심을 배치하면 중심이 원래 위치가됩니다. –

+2

참고 사항 [대답] (http://stackoverflow.com/q/3420651/230513). – trashgod

+1

* "시도 할 때마다"* [SSCCE] (http://sscce.org/) 형태로 한 번 시도해보십시오. –

답변

2

은 여기

Image rotatedImage = new BufferedImage(imageToRotate.getHeight(null), imageToRotate.getWidth(null), BufferedImage.TYPE_INT_ARGB); 
Graphics2D g2d = (Graphics2D) rotatedImage.getGraphics(); 
g2d.rotate(Math.toRadians(90.0)); 
g2d.drawImage(imageToRotate, 0, -rotatedImage.getWidth(null), null); 
g2d.dispose(); 
+0

고마워요. Jan, 나는 계속해서 정확한 결과를 얻고 있습니다. 이미지는 약 45도 회전합니다. 페이지를 왼쪽 하단으로 이동합니다. 이제 센터가 jpane의 왼쪽 아래에 있고 시계 방향으로 45도 회전했습니다. : S – ThePerson

+3

['rotate (double theta, double x, double y)'] (http://docs.oracle.com/javase/7/docs/api/java/awt/Graphics2D.html#rotate%28double 또한 고려하십시오. , % 20double, % 20double % 29)와'Math.PI/2'를 사용합니다. – trashgod

관련 문제