2012-04-16 4 views
1

私の目的は、マウスをドラッグしたときにドットを描くことです。 問題は、マウスをすばやく動かすと、小さな希望距離の代わりにドット間の距離が大きくなり、認識されなくなることです。Javaアプレット:高速ドラッグしたマウスは、ドットの間に大きなギャップを作成します

短縮コードは次のとおりです。あなたの助けのための

public void update(Graphics g){ 
    paint(g); 
} 

public void paint(Graphics g){ 
     for(i = 0; i <= height; i++){ 
      for(j = 0; j <= width; j++){ 
       if(virWorld[i][j] == 1) bufferGraphics.fillRect(i,j,1,1); 
      } 
     } 
     g.drawImage(offscreen,0,0,this); 
} 

public void mouseDragged(MouseEvent evt){ 
    curX = evt.getX(); 
    curY = evt.getY(); 
    virWorld[curX][curY] = 1; 
} 


public void run(){ 
    while(true){ 
     repaint(); 
     try{ 
      Thread.wait(10);  
     } 
     catch(Exception exception){ 
      System.out.println(exception); 
     } 
    } 
} 

おかげで、 ロビン

+1

質問し、達成しようとしていることを示したい場合があります。 –

+0

必要に応じてイベントディスパッチスレッドからrepaint()が呼び出されるため、run()メソッドは不要です。 – Adamski

+0

回答を受け入れるか、回答があなたのニーズに合わない理由を示すように、フォローアップを忘れないでください! –

答えて

2

だから、それがありません。前のポイントと現在のポイントの間を補間する必要があります。つまり、2つのポイント間に直線を描く必要があります。また、これを行うときに、より厚いストロークを設定したい場合があります。

+0

本当にありがとうございましたが、実際にはどうなるのか基本的な問題があると思いました。 – user1305241

1

遠くの点の間に線を引くか、冒険的な場合は曲線を描きます。

+0

もしあなたが少し冒険していないなら、私はあなたがプログラミングに適しているかどうかは疑問です。 ;) –

+0

ちょっと好奇心:どのようにカーブを描くのですか? 3つ以上の点で平滑化することによって? – ControlAltDel

+0

['Ellipse2D'](http://docs.oracle.com/javase/7/docs/api/java/awt/geom/Ellipse2D.html)、[' CubicCurve2D'](http:// docs .oracle.com/javase/7/docs/api/java/awt/geom/CubicCurve2D.html)&['QuadCurve2D'](http://docs.oracle.com/javase/7/docs/api/java/ awt/geom/QuadCurve2D.html)、わずかなコントロールポイントに基づいて滑らかなカーブを描画します。 –

関連する問題