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         /// <summary>
24         /// 显示窗体的Timer
25         /// </summary>
26         /// <param name="sender"></param>
27         /// <param name="e"></param>
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         /// <summary>
45         /// 窗体关闭渐变效果
46         /// </summary>
47         /// <param name="sender"></param>
48         /// <param name="e"></param>
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         /// <summary>
66         /// 降低透明度
67         /// </summary>
68         /// <param name="sender"></param>
69         /// <param name="e"></param>
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 }

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM