C#实现窗体淡入淡出效果的几种方法(转)

时间:2022-02-21 09:03:09
 

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.

 

用 循环或<strong class="kgb" onmouseover="isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u8BA1_u65F6_u5668";KeyGate_ads.ShowGgAds(this,"_u8BA1_u65F6_u5668",event)" style="BORDER-TOP-WIDTH: 0px; PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: underline" onclick="javascript:window.open("http://www.google.com/pagead/iclk?sa=l& amp;ai=BW8hhB2P3RtXEEp20sAK9_sDxD_6OtTDu4- v1ApqBqL0U0PhaEAEYASCvmqoJKAU4AVCy6trxAWCdidWBtAWgAbLAwPwDqgEKMTAwMDAxNjAwMsgBAakCLAaEmMXjgT7IAuKZmAHZA0ZGJIlU9rDD&num=1& amp;adurl=http://focus.ti.com.cn/cn/analog/docs /clockandtimershome.tsp%3FfamilyId%3D346%26contentType%3D4%26DCMP%3DTI- cn_Header_Tracking%26HQS%3Dv%3FOT%2Bhdr_p_clocks");GgKwClickStat("计时 器","focus.ti.com.cn","afs","1000016002");" onmouseout="isShowGg = false;InTextAds_GgLayer="_u8BA1_u65F6_u5668"">计时器,  

    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);

}