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

Я не собираюсь писать апплет для вас, но я дам вам несколько шагов, чтобы вы начали:

В вашем INIT:

  • Установите таймер, который вызывает метод обновления каждый раз.
  • Установить глобальный счетчик на 0

В вашем методе обновления:

  • Увеличение счетчика на 1 (возможно по модулю 360, чтобы сохранить его в 0-359 диапазоне)
  • Вызовите перекрашивать метод

В вашем методе краски:

  • Включите холст число градусов счетчика находится на (возможно с использованием объекта AffineTransform)
  • краски своим образом/квадрат/форма/ничего

Удачи :)

Смежные вопросы