C#实现窗体的淡入和淡出效果

本例实现在窗体在打开时逐渐淡入和窗体关闭时淡出的效果:

首先在一个窗体中加入一个按钮,来实现要淡入淡出效果的窗体的显示,代码如下:

private void button1_Click(object sender, EventArgs e)
        {
            frm渐变窗体 frm = new frm渐变窗体();
            frm.ShowDialog();
        }

在要实现渐变效果的窗体中需要放置两个Timer来实现淡入和淡出效果,在此例中使用Timer1来实现淡入效果,Timer2实现淡出效果,淡入淡出窗体代码如下:

淡入淡出窗体代码
 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Data;
 5 using System.Drawing;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Windows.Forms;
 9 
10 namespace 特效窗体
11 {
12     public partial class frm渐变窗体 : Form
13     {
14         //指定窗体完全透明  
15         private double m_CurrentOpacity = 0;
16 
17         public frm渐变窗体()
18         {
19             InitializeComponent();
20             this.Opacity = this.m_CurrentOpacity;
21         }
22 
23         /// 
24         /// 显示窗体的Timer
25         /// 
26         /// 
27         /// 
28         private void timer1_Tick(object sender, EventArgs e)
29         {
30             if (this.m_CurrentOpacity < 1)
31             {
32                 //如果当前的透明度小于1,则继续增加透明度
33                 this.m_CurrentOpacity += 0.05;
34                 this.Opacity = this.m_CurrentOpacity;
35             }
36             else
37             {
38                 //如果当前已经完全不透明,则停止timer
39                 this.timer1.Stop();
40                 this.timer1.Enabled = false;
41             }
42         }
43 
44         /// 
45         /// 窗体关闭渐变效果
46         /// 
47         /// 
48         /// 
49         private void frm渐变窗体_FormClosing(object sender, FormClosingEventArgs e)
50         {
51             //****************
52             //在关闭窗体时有可能打开效果还没有完全透明,所以需要先关闭显示窗体的timer
53             this.timer1.Stop();
54             this.timer1.Enabled = false;
55             //****************
56             if (this.m_CurrentOpacity > 0)
57             {
58                 //如果当前的透明度>0,则打开降低透明度的Timer2
59                 e.Cancel = true;
60                 this.timer2.Enabled = true;
61                 this.timer2.Start();
62             }
63         }
64 
65         /// 
66         /// 降低透明度
67         /// 
68         /// 
69         /// 
70         private void timer2_Tick(object sender, EventArgs e)
71         {
72             if (this.m_CurrentOpacity > 0)
73             {
74                 //如果当前的透明度>0,则降低透明度
75                 this.m_CurrentOpacity -= 0.05;
76                 this.Opacity = this.m_CurrentOpacity;
77             }
78             else
79             {
80                 //如果完全不透明,则关闭降低透明度timer,且关闭窗体
81                 this.timer2.Stop();
82                 this.timer2.Enabled = false;
83                 this.Close();
84             }
85         }
86 
87     }
88 }

 

转载于:https://www.cnblogs.com/wuzi145/archive/2012/05/05/2485263.html

你可能感兴趣的:(C#实现窗体的淡入和淡出效果)