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