2017-04-22 69 views
0

我想要做的就是显示窗体的100不透明度,然后X时间开始褪色,直到0.0不透明度,我有算法,但我不知道在哪里实现它,就好像我使用它在Form_Load中已经显示出最终的不透明度,以及InitializeComponent();C#窗体逐渐褪色

this.Opacity = 1.0; 

for (float i = 1.0f; i >= 0.0f; i -= 0.1f) 
{ 
    this.Opacity = i; 
    Thread.Sleep(150); 
} 
+0

考虑改用WPF; WinForms并不是真的为这样的事情... – BradleyDotNET

+1

我会避免睡觉。 –

+0

睡觉只是我试图在做功能之前使窗体显示 –

回答

1

使用Shown Event,如果你希望它发生一次的形式获得焦点,使用Activated Event时间的形式加载后只发生一次,或者。

在Form1.cs:

private void Form1_Shown(object sender, EventArgs e) 
{ 
    this.Opacity = 1.0; 

    for (float i = 1.0f; i >= 0.0f; i -= 0.1f) 
    { 
     this.Opacity = i; 
     Thread.Sleep(150); 
    } 
} 

在Form1.Designer.cs:

this.Shown += new System.EventHandler(this.Form1_Shown); 

如果你想使窗体不可见的,控制保持可见,您可以使用TransparencyKey属性:

private void Form1_Shown(object sender, EventArgs e) 
{ 
    // Choose some obscure background that no other controls will have 
    this.BackColor = Color.Red; 
    this.TransparencyKey = this.BackColor; 
} 
+0

有些奇怪的原因,当它是淡出文字具有透明背景,就像我可以通过图像看到的一样,并且没有任何文字 –

+0

这就是不透明度所做的事情......您希望它做什么? –

+0

我更新了一个使表单透明但不是控件的例子。不知道是否有办法逐步做到这一点,但... –