本例實現在窗體在打開時逐漸淡入和窗體關閉時淡出的效果:
首先在一個窗體中加入一個按鈕,來實現要淡入淡出效果的窗體的顯示,代碼如下:
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 }