前段时间下载了一个MFC写的系统管理软件,启动和退出程序采用了淡入淡出效果。我便想,这种效果能否用C#实现。搜索相关网络资料后,得到的结果是肯定的,我总结了下,大概有三种比较常用的方法,分别是使用计时器、循环控制和AnimateWindow函数来实现该效果,其中使用计时器、循环控制是采用的对Form的Opacity属性进行设置,通过不断刷新窗体实现淡入淡出效果,而API AnimateWindows是微软提供的专门的窗口特效函数,在MSDN上的描述为:The AnimateWindow function enables you to produce special effects when showing or hiding windows. There are four types of animation: roll, slide, collapse or expand, and alpha-blended fade.
可以看到它有四种类型:滚动、平滑、折叠和展开、alpha值的渐变,在此实例中我们使用的是BLEND。
下面我们来看看他们的具体代码:
(1) 使用计时器,此方法是让Form.的opacity随计时器间隔时间变化而不断变化的值来实现效果,通过timer1_Tick事件来实现了opacity的循环改变。
private void timer1_Tick(object sender, EventArgs e)
{
Double WShow = 0.0;
this.Opacity = WShow;
WShow += 0.1;
if (WShow >= 1)
{
timer1.Dispose();
}
}
(2) 使用循环,此方法有些类似于使用计时器的方法,都上通过循环改变窗体opacity值来实现效果,