在WinForm中偶尔会遇到某些特殊效果:比如某个窗口刚开始的时候是完全透明的,随着时间的变化,窗体逐渐不透明,直至完全...

解决方案 »

  1.   

    定义一个全局变量,int i=0;
    弄一个Timer,Timer的tick事件里面写上this.opacity=i++;
    然后加一句判断 if(i>100) timer.enable=false;
    这样就可以慢慢变到饱和啦
      

  2.   

    在Form上放一个时间控件,处理代码如下:private void Form1_Load(object sender, EventArgs e)
            {
                this.Opacity = 0;
                this.timer1.Interval = 100;
                this.timer1.Start();
            }        private void timer1_Tick(object sender, EventArgs e)//时间间隔事件
            {
                if (this.Opacity < 100)
                {
                    this.Opacity += 0.05;
                }
                else
                {
                    this.timer1.Stop();
                }
            }
      

  3.   

    实现一个窗体,在弹出时要慢慢从透明到不透明的特效
            private double opacityIncrement = 0.1;
    private const int changeInterval = 25;
    private Timer timer1; //表单载入
    private void Form1_Load(object sender, System.EventArgs e)
    { timer1=new Timer();
    timer1.Interval=changeInterval;
    timer1.Tick+=new System.EventHandler(this.timer1_Tick);
    this.Opacity=0;
    timer1.Start();
    } //渐显事件
    private void timer1_Tick(object sender, System.EventArgs e)
    {
              this.timer1.Stop();
    if(this.Opacity<1)
    {
    this.Opacity=this.Opacity+this.changeInterval;
    }
    else
    {
    this.timer1.Enabled=false;
    }
            this.timer1.Start();
            }
      

  4.   

    用timer控件可以实现 代码可以参考楼上的
      

  5.   

    借楼主的贴子提问:
    不用timer如何实现呢?~直接定义一个线程该怎么弄呢``
      

  6.   

    有个API,AnimateWindow。
    BOOL AnimateWindow(          HWND hwnd,
        DWORD dwTime,
        DWORD dwFlags
    );
    dwFlags可以用这个参数,AW_BLEND:Uses a fade effect. This flag can be used only if hwnd is a top-level window.