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 }

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值