淡入淡出启动画面

4
在一个C# Windows窗体应用程序中,我有一个带有一些多线程进程在后台运行的启动画面。我想做的是当我最初显示启动画面时,我想让它看起来像是“淡入”。然后,一旦所有进程完成,我想让它看起来像是启动画面正在“淡出”。我正在使用C#和.NET 2.0。谢谢。
4个回答

10

6

使用不透明度属性时,必须记住它的类型是double,其中1.0表示完全不透明,而0.0表示完全透明。

   private void fadeTimer_Tick(object sender, EventArgs e)
    {
        this.Opacity -= 0.01;

        if (this.Opacity <= 0)
        {
            this.Close();
        }            
    }

这是淡出效果,不是淡入。 - Joe Hildebrand
如果计时器设置为快速的50毫秒,并且不透明度是一个百分比,那么这个淡出操作需要大约8分钟时间吗? - mackenir
如果你的计时器是每个tick 50毫秒,那么需要5秒钟。(1.0 / 0.01) = 100 * 50毫秒 = 5000毫秒 => 5秒 - slyprid
2
嗨@aaronfoley,我已经擅自编辑了你的答案,删除了关于不透明度是“百分比”的提及,因为这与随后的文本相矛盾(不透明度是0到1之间的值)。你可以随意恢复并自行进行更改,或者不进行更改。我知道别人编辑你的答案会让人很烦。干杯。 - mackenir

3
While(this.Opacity !=0)
{
    this.Opacity -= 0.05;
    Thread.Sleep(50);//This is for the speed of the opacity... and will let the form redraw
}

3
所以你在2个迭代中就要“淡出”了?我几乎不能称之为淡出...更重要的是,我相信你的Thread.Sleep会阻塞UI线程,从而防止其更新。 - Idan K
Idan,请冷静。首先,我写错了-0.5,实际上0.05可能是更好的值。但你可以使用你想要的那个... Thread.Sleep()不会阻塞UI,因为它给Redraw留出了空间。也许不是最好的解决方案,但它确实有效。 - Patrick Desjardins

3
您可以使用透明度(Opacity)属性来改变表单的淡入淡出效果(值在0.0到1.0之间)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接