2017-07-15 3 views
0

Visual Studioでフォームのトランジションを作成しています 幅のスライドエフェクトをコーディングしていますが、遅くなるため、遅くなります。 がところで、ここのコードです:フォームのスライドトランジションC#

`int check = 0; 
private void button1_Click(object sender, EventArgs e) 
    { 
     this.button1.Text = "Hide"; 

     if (check == 0) 
     { 

      for (int i = 350; i <= 824; ++i) 
      { 
       this.Size = new Size(i, 507); 
       Thread.Sleep(10); 
       this.CenterToScreen(); 


      } 
      check = 1; 


     } 

     else if (check == 1) 
     { 
      this.button1.Text = "Key"; 

      for (int i = 824; i >= 351; i--) 
      { 
       this.Size = new Size(i, 507); 
       Thread.Sleep(5); 
       this.CenterToScreen(); 


      } 


      check = 0; 

     } 
    } 
+0

組み込みのアニメーションを使用します。 https://stackoverflow.com/questions/33114198/slide-in-slide-out-animation –

+1

@SvSv彼はwpfでないwinformsを使用しています – jonathana

+0

モニタのリフレッシュレートが60 Hzの場合、16.667 msより速く変更できません。とにかく表示されます。 (int i = 824; i = 351; i + = 10) ' –

答えて

1

既存のコードを使用することにより、あなたのような速さのために調整することができます。

private int check = 0; 
private void button1_Click(object sender, EventArgs e) 
{ 
    this.button1.Text = "Hide"; 

    if (check == 0) 
    { 
     for (int i = 350; i <= 824; i += 2) 
     { 
      this.Size = new Size(i, 507); 
      Thread.Sleep(1); 
      this.CenterToScreen(); 
     } 
     check = 1; 


    } 

    else if (check == 1) 
    { 
     this.button1.Text = "Key"; 

     for (int i = 824; i >= 351; i -= 2) 
     { 
      this.Size = new Size(i, 507); 
      Thread.Sleep(1); 
      this.CenterToScreen(); 
     } 
     check = 0; 
    } 
} 

上記のようにThread.Sleep行を変更し、アニメーションを高速化するためにループ変数を増減できます。

関連する問題