C#实现窗体几种淡入淡出效果的方法
1. private void Form1_Load(object sender, System.EventArgs e) for(double d=0.01; d< 1; d+=0.02) { System.Threading.Thread.Sleep(1); Application.DoEvents(); this.Opacity=d; this.Refresh(); } 2. private void timer1_Tick(object sender, System.EventArgs e) { this.Opacity = WinShow ; WinShow += 0.1 ; if(WinShow >=1 ) { timer1.Dispose (); } } 3. 用循环或计时器, frmForm myForm=new frmForm() frmForm.Opacity=0; frmForm.show(); for(int i=0;i<100;i++) { Application.DoEvents() frmForm.Opacity=i/100; } 4. #region ******** 窗体淡入效果函数 ******** private double WinShow = 0;//用于窗口淡入效果的变量 private void FormShow(System.Windows.Forms.Form Curfrm) { Curfrm.Opacity = WinShow ; WinShow += 0.01; if(WinShow == 1) { Curfrm.timerShow.Stop (); } } #endregion #region ******** 窗体淡入效果函数调用示例 ******** //实现窗口的淡入效果 private void timerShow_Tick(object sender, System.EventArgs e) { //timerShow,这是一个timer控件名称;把timerShow.interval=100就可以了。 FormShow(this); } #endregion 5. using System.Runtime.InteropServices; public class Win32 { public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口 public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口 public const Int32 AW_VER_POSITIVE = 0x00000004; // 从上到下打开窗口 public const Int32 AW_VER_NEGATIVE = 0x00000008; // 从下到上打开窗口 public const Int32 AW_CENTER = 0x00000010; public const Int32 AW_HIDE = 0x00010000; // 在窗体卸载时若想使用本函数就得加上此常量 public const Int32 AW_ACTIVATE = 0x00020000; //在窗体通过本函数打开后,默认情况下会失去焦点,除非加上本常量 public const Int32 AW_SLIDE = 0x00040000; public const Int32 AW_BLEND = 0x00080000; // 淡入淡出效果 [DllImport("user32.dll", CharSet = CharSet.Auto)] public static extern bool AnimateWindow( IntPtr hwnd, // handle to window int dwTime, // duration of animation int dwFlags // animation type ); } /*淡入窗体*/ private void Form_Load(object sender, EventArgs e) { Win32.AnimateWindow(this.Handle, 2000, Win32.AW_BLEND); } /*淡出窗体*/ private void Form_FormClosing(object sender, FormClosingEventArgs e) { Win32.AnimateWindow(this.Handle, 2000, Win32.AW_SLIDE | Win32.AW_HIDE | Win32.AW_BLEND); }