1

したがって、160,160 に長方形「rectangle1」があります。

約1秒で座標160,30までスムーズに移動したいです。(時間遅延)

形状を移動するための基本的なコードが

rectangle1.Location = new Point(160,30);

ただし、forループを実行しようとすると

rectangle1.Location = new Point(160, rectangle1.Location.Y - 100);

すぐにそこに移動しました。私が本当に期待していたはずです。同じことが発生しました

int count = 0;
while(count != 300)
{
       rectangle1.Location = new Point(160, rectangle1.Location.Y -1);
       count += 2;
}

だから、私はそれを動かすある種のクロック/タイマーループが必要だと思いますx pixels every x milliseconds。これを行う方法がわからないので、助けていただければ幸いです。


また、他の 2 つの四角形を水平方向にアニメーション化して、上方向に上方向に移動するのは、rectangle1 と同じ時間/速度です。正しい位置に来るまで、rectangle1 の動きを「遅らせる」必要があると思います。

ありがとう。

PS: かなりググってみましたが、何を探しているのかよくわからないので、あまり実りがありませんでした。

4

1 に答える 1

3

スムーズな動きが必要な場合は、タイマー、スレッド、バックグラウンドワーカーを使用するのが最適です。

これがあなたがする必要があることです。形状のx、yポイントをインクリメント/デクリメントするコードがあると仮定します。

手順:

  • タイマー間隔をたとえば100に設定します

  • 整数のintcount=0を設定します。*

  • timer_tickイベントで移動作業を行います

     private void timer1_Tick(object sender, EventArgs e)
     // no need to use your while loop anymore :))
      {       
       If(count< 300) //set to your own criteria
       {
         //e.g. myrect.location=new point(x,y);
         // rectangle1.Location = new Point(160, rectangle1.Location.Y -1);       
       }
    
        count += 2;
    }
    
于 2012-12-01T13:54:47.510 に答える