2012-05-16 4 views
0

애플릿에 회전 사각형을 만들어야합니다. 어떻게 이루어 집니까? 직사각형은 비행기의 코너 중 하나를 중심으로 회전해야합니다. 이것은 내가 지금까지 무엇을 가지고 :애플릿에 회전 사각형을 그립니다.

import java.awt.Color; 
import java.awt.Font; 
import java.awt.Graphics; 
import javax.swing.JApplet; 

public class MainApplet extends JApplet { 
    Font bigFont; 
    Color redColor; 
    Color weirdColor; 
    Color bgColor; 

    @Override 
    public void init() 
    { 
      bigFont = new Font("Arial",Font.BOLD,16); 
      redColor = Color.red; 
      weirdColor = new Color(60,60,122); 
     setBackground(bgColor); 
    } 

    @Override 
    public void stop() { } 

    @Override 
    public void paint(Graphics g) 
    { 
     g.setFont(bigFont); 
     g.drawString("Shapes and Colors",80,20);  
     g.setColor(redColor); 
     g.drawRect(100,100,100,100); 
     g.fillRect(100,100,100,100); 
    } 
} 
+1

중복 : HTTP : //stackoverflow.com/questions/7517688/rotate-a-java-graphics2d-rectangle – zeller

+0

이 작업을 수행하려면 AffineTransform을 사용하십시오. [API] (http://docs.oracle.com/javase/7/docs/api/java/awt/geom/AffineTransform.html)를 확인하면 변형을 반환하는 정적 메서드가 있음을 알 수 있습니다. 특히 회전을 위해. 변형을하기 전에 모든 각도를 라디안으로 변환해야합니다. 또한 [Swing Timer] (http://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html)를 사용하여 애니메이션을 구동해야합니다. –

답변

2

내가 당신을 위해 애플릿을 작성하지 않을거야,하지만 난 당신이 시작하는 몇 가지 단계주지 : 당신의 초기화에

을 :

  • 매번 refresh 메서드를 호출하는 타이머를 설정합니다.
  • 는 새로 고침 방법 0

에 글로벌 카운터를 설정합니다

  • 를 호출을합니다 (0-359 범위에서 그것을 유지하기 위해 가능한 모드 360) (1)에 의해 카운터를 증가 당신의 페인트 방법은 방법

을 다시 칠 :

  • 페인트 (AN AffineTransform 객체를 사용 가능하게 ) 캔버스에게 카운터에 학위의 수를 돌려
  • 이미지/평방/모양/아무것도

행운을 빕니다 :)

관련 문제