对着月亮唱歌的幸福生活

即便是莲藕内心真空之所,也有根根柔丝穿过。
  博客园  :: 首页  :: 联系 :: 管理

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

Posted on 2009-04-15 10:42  对月而歌  阅读(295)  评论(0)    收藏  举报

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&ai=BW8hhB2P3RtXEEp20sAK9_sDxD_6OtTDu4-v1ApqBqL0U0PhaEAEYASCvmqoJKAU4AVCy6trxAWCdidWBtAWgAbLAwPwDqgEKMTAwMDAxNjAwMsgBAakCLAaEmMXjgT7IAuKZmAHZA0ZGJIlU9rDD&num=1&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);
}