현재 g2d 객체에 회전을 적용하면 회전하지 않고 같은 위치 (다른 객체의 위에있는 내 컨텍스트)에서 렌더링합니다. 내가 rotate 메소드에 대해 이해하고있는 바에 따르면, 현재 그래픽 컨텍스트에 변환을 적용하여 그 뒤의 렌더링의 픽셀을 변환합니다 (이것이 잘못 될 수 있음). 여기에 문제의 코드입니다 :Java rotate issue
@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
....
....
g2d.setColor(Color.RED);
g2d.setStroke(new BasicStroke(SMALL_LINE_THICKNESS));
if (isLattice1Drawn) {
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1));
// lattice1 and lattice2 are Polygon objects
g2d.draw(lattice1);
// This fades in the second Polygon over the first
g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, alpha));
// This line should rotate it, but doesn't
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
.....
감사합니다, 마이크
편집 한 제프의 제안으로, 나는 다음과 같은 코드로 날 떠나, 단지 회전 가진 페인트로 그리기 시도 :
@Override
public void paint(final Graphics graphics) {
super.paint(graphics);
final Graphics2D g2d = (Graphics2D) graphics;
g2d.rotate(Math.toRadians(210));
g2d.draw(lattice2);
return;
// Rest of paint .................
불행히도 이것은 도움이되지 않았으며, 다른 제안이 가장 환영받을 것입니다.
편집 2 : 회전을 호출하지 않으면 폴리곤이 렌더링되지만 아무 일도 일어나지 않습니다. 아무도 이것을 설명 할 수 있습니까?
: 원하는 작업이 질량 중심 주위에 다각형을 회전하는 경우
다음, 대신 다음 Graphics2D의 메소드를 사용합니다. 격자가 뭐야? 그게 당신이 만든 무언가입니까? – jeff
@jeff lattice1과 lattice2는 java.awt.Polygon의 인스턴스입니다. 특별한 것은 없습니다 :) – mikeythemissile
저는 손실이 있습니다 - 회전을 사용하여 lattice2를 페인트 메서드에 떨어 뜨리면 어떨까요? – jeff