2017-11-29 21 views
1

C#でかなり新しいです。Windowsフォームアプリケーションでピンポンゲームを作成しようとしています。パネルを使用していましたが、パドル用に2枚の画像ボックスを使用していますボールのための別のもの。パドルのために私は単にパドルイメージを使用しているとパドルの移動のために、以下のフォームイベントを使用していますパネル内で無限に画像ボックスを移動する

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    switch (e.KeyCode) 
    { 
     case Keys.Left: 
      if (pictureBox1.Left < panel1.Left) 
      { 
       pictureBox1.Left -= 0; 
      } 
      else 
      { 
       pictureBox1.Left -= 5; 
      } 
      break; 
     case Keys.Right: 
      if (pictureBox1.Right > panel1.Right) 
      { 
       pictureBox1.Left += 0; 
      } 
      else 
      { 
       pictureBox1.Left += 5; 
      } 
      break; 
    } 
} 

細かく働いている、とボールのために私はと円を描くようにグラフィックを作成しました次の:

private void pictureBox2_Paint(object sender, PaintEventArgs e) 
{ 
    Circle(e); 
} 

private void Circle(PaintEventArgs e) 
{ 
    Graphics g1 = e.Graphics; 
    Pen p1 = new Pen(Color.Black); 
    g1.DrawEllipse(p1, 4, 4, 18, 18); 
} 

今の問題は、私はタイマーを使用しているが、それはまだ働いていない無限ボールグラフィックとピクチャボックスを移動することはできませんよということです。

private void timer1_Tick(object sender, EventArgs e) 
{ 
    //some for loop condition to move the Image 
    for(;;) 
    { 
     //some condition to move the image infinitely 
    } 
} 

私はタイマー機能を使用して、パネル内の画像ボックスの無限の動きを実行する方法についてはあまりよく分かりません。別のスレッドにもしようとしましたが、うまくいきません。

+0

誰かが初心者であるため、私は人々をダウンvoteとは思わない。私は人々が "_ _うまくいかない... _"のような過度に一般化されたエラー記述のためにダウンボートすることを期待するでしょう。 –

+0

ティックイベント内では、ボックスを1ステップだけ移動して、その機能を再び残す必要があります。タイマーインターバルを例えばに設定すると、 50ミリ秒で希望の動きが見えるはずです。 – Oliver

+0

私はそれを念頭に置いておきます、ありがとう... –

答えて

1

次のように私はダニイベントにタイマー間隔を追加コメント欄からオリバーによって示唆されているように私は解決策を見つけた:解決のための

public Form1() 
    { 
     InitializeComponent(); 
     timer.Interval = 15; 
     timer.Tick += Timer_Tick; 
     timer.Start(); 
    } 

    private void Timer_Tick(object sender, EventArgs e) 
    { 
     pictureBoxBall.Left += 5; 
    } 

感謝を。

関連する問題