2016-10-10 9 views
0

360度線を移動します。Javaアプレットでアナログ時計のように360度の線をアニメーション化する方法

はここに私のコードが代わりに360度に回転線が大きいと大きくなる回転

import java.applet.*; 
import java.awt.*; 
import java.util.*; 
public class HelloWorldApplet extends Applet implements Runnable{ 
    Insets insets; 
    Thread th; 
    int x; 
    Image bakground; 
    public void paint (Graphics g){ 
     super.paint(g); 
     g.setColor(Color.BLACK); 
     g.drawLine(x,10,90,90); 
} 
public void init() { 
    bakground=getImage(getCodeBase(),"clock"); 
} 
@Override 
public void start() { 
    if(th==null){ 
     th=new Thread(this); 
     th.start(); 
    } 
} 
@Override 
public void run() { 
    // TODO Auto-generated method stub 
    for (x = 90;x <=450; x+=5) { 
     repaint(); 
     try{ 
      th.sleep(100); 
     } 
     catch(Exception r){ 

     } 
    } 
} 
} 

あります。 私はアナログ時計のようにラインをアニメーションしたいです。

+0

ラインは斜面に沿って点で構成されています。ここでは、y値、高さを変更する必要があるときに、X値、長さを変更しています。これはあなたが望むものを与えるはずです。 –

+0

あなたはコードの一部を書くことができますどのように私はそれを行うことができます – Neman

答えて

1

数学の魔法、特に三角法を使用して、円の上にある線の終点を計算することができます。 しかし、最も簡単な方法は、アフィン変換を使用することです。これを見てくださいpaint()方法

public void paint (Graphics g){ 
    super.paint(g);  
    g.setColor(Color.BLACK);   
    Graphics2D gg = (Graphics2D) g.create(); // create new layer and cast to advanced Graphics2d 
    gg.rotate(Math.toRadians(x), 90,90);  // rotate new layer at center position 90,90 around x degrees 
    gg.drawLine(90,90,0,0);     // draw line to center position 
    gg.dispose();        // push new layer back 
} 
+0

ありがとう:) – Neman

関連する問題