Demo Blog

Adicionando efeito fade-in e fade-out no seu formulário usando C#

by André Melo on Nov.22, 2009, under , , , , , , , , , , , , ,

Neste artigo vou explicar como você pode colocar efeitos de fade-in e fade-out em seus formulários usando C #.

Vamos à prática

Abra o Visual Studio (2005 ou 2008) e inicie uma novo projeto Windows Application usando C #. Adicione um botão no Form1.
Adicione mais um formulário ao seu projeto e inclua um controle timer nele. Este timer será usado para mostrar o efeito de esmaecimento. Defina a propriedade ‘Interval’ do timer1 para 100 milissegundos.

Agora escreva o seguinte código no evento Load do Form1:

private void Form1_Load(object sender, EventArgs e)
{
button1.Text = "Mostrar estilo";
}


Escreva o seguinte código no evento clique button1:

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog(this);
}


Agora no Form2 crie uma variável privada do tipo boolean que basicamente será usada para controlar se o formulário aparece ou desaparece.

private bool Checkinout;


Agora temos que substituir o procedimento OnLoad do Form2 e escrever o seguinte código:

protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
if (!DesignMode)
{
Checkinout = true;
Opacity = 0;
timer1.Enabled = true;
}
}


O DesignMode indica se o System.ComponentModel.Component está no modo de design ou não.
A propriedade 'Opacity' da classe System.Windows.Forms.Form é usada para especificar um nível de transparência para um formulário e seus controles.

Temos de substituir o procedimento OnClosing também, e escrever o seguinte código para ele:

protected override void OnClosing(CancelEventArgs e)
{
base.OnClosing(e);

if (e.Cancel == true) return;
if (Opacity > 0)
{
Checkinout = false;
timer1.Enabled = true;
e.Cancel = true;
}
}


Agora dê um duplo clique no controle timer e escreva o seguinte código no evento Tick:

private void timer1_Tick(object sender, EventArgs e)
{
if (Checkinout == false)
{
Opacity -= (timer1.Interval / 1000.0);
if (this.Opacity > 0)
timer1.Enabled = true;
else
{
timer1.Enabled = false;
Close();
}
}
else
{
Opacity += (timer1.Interval / 1000.0);
timer1.Enabled = (Opacity < 1.0);
Checkinout = (Opacity < 1.0);
}
}

0 comentários more...

0 comentários

Postar um comentário

Procurando algo?

use o mecanismo de busca para pesquisar no meu blog:

Não encontrou o que procura? Deixe um comentário no post para que possa solucionar a questão!