2017-07-15 53 views
0

我在Visual Studio中为我的表单创建了一个转换, 我为宽度编写了一个幻灯片效果,但它最终以缓慢的速度运行 有没有办法让它更快? BTW这里是代码:表单幻灯片转换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他使用winforms而不是wpf – jonathana

+0

如果你的显示器有60赫兹的刷新率,那么改变速度比16.667毫秒更快反正显示。使用更大的间隔和更大尺寸的计时器'for(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行并增加或减少循环变量以加快动画速度。