2008-09-17 31 views
4

C#windowsフォームアプリケーションでは、私はいくつかのマルチスレッドプロセスがバックグラウンドで起こっているスプラッシュ画面を持っています。私がしたいのは、最初にスプラッシュ画面を表示するときに、「フェードイン」するようにしたいということです。そして、すべてのプロセスが終了したら、スプラッシュ画面が「フェードアウト」しているように見せてください。私はC#と.NET 2.0を使用しています。ありがとう。スプラッシュスクリーンのフェードイン/アウト

答えて

3

フォームの不透明度プロパティを使用して、フェード(0.0〜1.0の間)を変更できます。

2
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 
} 
+2

2回の繰り返しで「フェードアウト」していますか?私はそれをフェードアウトと呼ぶことはほとんどありません...もっとそう、私はあなたのThread.SleepがUIスレッドをブロックし、更新を妨げると信じています。 –

+0

イダンは落ち着いています。最初に私は-0.5と書いていましたが、これはタイプミスでした。実際、0.05がより良い値になる可能性があります。しかし、あなたが望むものを使うことができます... Thread.Sleep()はUIをブロックしません。なぜなら、Redrawに余裕があるからです。最高の解決策ではないかもしれませんが、うまくいきます。 –

5

Opacityプロパティを使用する場合は、double型(1.0は完全不透明、0.0は完全に透明)を覚えておく必要があります。

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

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

これはフェードアウトであり、フェードインではありません。 –

+0

タイマーが50msに設定され、不透明度がパーセンテージの場合、このフェードアウトには約8分かかりませんか? – mackenir

+0

@mackenirタイマーが50ms/tickの場合は、5秒かかります。 (1.0/0.01)= 100 * 50ms = 5000ms => 5sec – slyprid

関連する問題