2013-07-21 39 views
0

我有一個窗體。 我想,當點擊某個按鈕來爲表單的擴展創建動畫時,顯示錶單的新部分(無需形成表單並將其中的一個動畫化)。Animate WinForms

這可能嗎?

回答

0

依靠Timer可以獲得足夠好的效果。在這裏,您可以看到一個示例代碼,演示如何在單擊按鈕後爲主表單的增大尺寸設置動畫。通過增加/減少所有變量(X/Y包括數值或間隔),您可以完全控制動畫「看起來」的方式。只需在表格和下面的代碼中包含一個按鈕(button1)和一個計時器(timer1)。

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApplication1 
{ 

    public partial class Form1 : Form 
    { 
     int timerInterval, curWidth, curHeight, incWidth, incHeight, maxWidth, maxHeight; 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      curWidth = this.Location.X + this.Width; 
      curHeight = this.Location.Y + this.Height; 
      incWidth = 100; 
      incHeight = 20; 
      maxWidth = 2000; 
      maxHeight = 1500; 
      timerInterval = 100; 
      timer1.Enabled = false; 
      timer1.Interval = timerInterval; 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      curWidth = curWidth + incWidth; 
      curHeight = curHeight + incHeight; 
      if (curWidth >= maxWidth) 
      { 
       curWidth = maxWidth; 
      } 
      if (curHeight >= maxHeight) 
      { 
       curHeight = maxHeight; 
      } 

      this.Width = curWidth; 
      this.Height = curHeight; 

      if (this.Width == maxWidth && this.Height == maxHeight) 
      { 
       timer1.Stop(); 
      } 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
       timer1.Enabled = !timer1.Enabled; 
     } 
    } 
} 
+1

在'button1_Click'可以更簡潔這樣的代碼'timer1.Enabled = timer1.Enabled;!' –

+0

@KingKing好點,我已經更新了代碼。老實說,我不知道Timer可以通過Enabled屬性來觸發;我認爲這是一個表明狀態的布爾變量。 – varocarbas