2013-07-21 2 views
0

У меня есть форма для окон. Я бы хотел, чтобы кнопка нажала кнопку, чтобы оживить расширение формы, открыв новый раздел формы (без необходимости создавать и анимацию одного из них).Анимация WinForms

Возможно ли это?

ответ

0

Вы можете получить хороший эффект, полагаясь на Timer. Здесь у вас есть пример кода, показывающий, как «оживить» увеличивающийся размер основной формы после нажатия кнопки. Увеличивая/уменьшая все переменные (X/Y inc. Values ​​или interval), вы можете получить полный контроль над тем, как анимация «выглядит». Просто включите кнопку (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 хороший момент, я обновил код. Честно говоря, я не знал, что таймер может быть запущен через свойство Enabled; Я думал, что это логическая переменная, указывающая только состояние. – varocarbas

Смежные вопросы