WINFORM-调用等待窗口及淡出效果

1.创建类如下 
public class StartForm
    {
        Form f = new Form();              //实例化窗体
        int iCount = 1; // 初始值
        int CountMax=100; //默认值
        string imgpath = "loading.gif";   //图片路径      
 
        /// <summary>
        /// 默认时钟运行最大值100
        /// </summary>
        public void FormStart()
        {            
            f.FormBorderStyle = FormBorderStyle.None;//去掉外框                   
            f.StartPosition = FormStartPosition.CenterParent;//屏幕中央           
            PictureBox pb = new PictureBox();      //实例化PictureBox控件      
            pb.Image = Image.FromFile(imgpath);    //给PictureBox添加图片
            pb.SizeMode = PictureBoxSizeMode.AutoSize; //PictureBox容器大小等于图片大小
            f.Size = pb.Size; //自动适应图片大小
            f.Controls.Add(pb);        //窗体上添加PictureBox控件
            pb.Dock = DockStyle.Fill;  //PictureBox填充整个窗体          
            RegeistTimer();           //运行时钟
            f.ShowDialog();           //显示窗体 
        }
 
        /// <summary>
        /// 重载,时钟运行最大值
        /// </summary>
        /// <param name="时钟运行最大值"></param>
        public void FormStart(int MaxNum)
        {
            f.FormBorderStyle = FormBorderStyle.None;//去掉外框                   
            f.StartPosition = FormStartPosition.CenterParent;//屏幕中央           
            PictureBox pb = new PictureBox();      //实例化PictureBox控件      
            pb.Image = Image.FromFile(imgpath);    //给PictureBox添加图片
            pb.SizeMode = PictureBoxSizeMode.AutoSize; //PictureBox容器大小等于图片大小
            f.Size = pb.Size; //自动适应图片大小
            f.Controls.Add(pb);        //窗体上添加PictureBox控件
            pb.Dock = DockStyle.Fill;  //PictureBox填充整个窗体    
            CountMax = MaxNum;         //时钟运行最大值
            RegeistTimer();           //运行时钟
            f.ShowDialog();           //显示窗体 
        }
 
        //注册时钟对象
        public void RegeistTimer()
        {            
            Timer tm = new Timer(); //实例化时钟
            tm.Start();
            tm.Interval = 100;
            tm.Tick += new EventHandler(tm_tick); //注册时钟运行事件        
        }      
 
        //时钟运行事件
        private void tm_tick(object sender, EventArgs e)
        {            
            if (iCount==CountMax)
            {
                TimerEnd();      //调用结束        
            }
            iCount += CountMax/100;         //时钟步长                          
            f.Opacity = 1 - Convert.ToDouble(iCount) / CountMax;  //窗体透明度减小
        }
 
       //结束
        private void TimerEnd()
        {
            f.Close(); 
            return;
        }    
    }

2.使用:调用类方法 

StartForm sf = new StartForm(); //类实例化
sf.FormStart()或sf.FormStart(200); //调用方法

 

posted @ 2014-04-28 21:58  oliverary  阅读(334)  评论(0)    收藏  举报