.NET TIPS

Windowsアプリケーションでスプラッシュ・スクリーンを表示するには?

デジタルアドバンテージ
2004/10/29

 Windowsアプリケーションでは、アプリケーションの起動時に、次の画面のようなビットマップが表示されることがある。例えば、Visual Studio .NET(以降、VS.NET)の起動時にも、「Visual Studio .net」などと書かれたビットマップ画面が表示されているはずだ。一般的に、起動時に表示されるこのビットマップ画面は「スプラッシュ・スクリーン」と呼ばれ、多くの場合、アプリケーションの起動状況なども表示される。

Windowsアプリケーション起動時に表示されるスプラッシュ・スクリーンの例
アプリケーションの起動時に、このようなビットマップが表示されることがある。例えば、VS.NETの起動時にも、このようなビットマップ画面が表示されているはずだ。
  起動処理の進行状況を表示するLabelコントロール。このようにスプラッシュ・スクリーン上に起動状況を表示することで、ユーザーが待たされてストレスを感じるのを軽減できる場合がある。特に起動に時間がかかるアプリケーションで有効な手法である。

 本稿では、このようなスプラッシュ・スクリーンの表示を、Windowsアプリケーションで行う方法を紹介する。なお、VS.NETを使った実装方法についてのみ説明するので、あらかじめご了承いただきたい。

 本稿で解説に使用するサンプル・プログラムは次のリンクからダウンロードできる

  • Visual Studio .NET 2002(C#VB.NET
  • Visual Studio .NET 2003(C#VB.NET

Windowsアプリケーションでのスプラッシュ・スクリーンの表示

 スプラッシュ・スクリーンを表示するには、まず、そのためのフォームがメイン・ウィンドウとは別に必要となる。このフォームを新たに作成するには、通常のフォームの作成と同じように、メニュー・バーから[ファイル]−[新しい項目の追加]を選択し、そこで表示される[新しい項目の追加]ダイアログを使えばよい。本稿では、「SplashScreen.cs」(C#の場合。VB.NETでは「SplashScreen.vb」)というファイル名のWindowsフォームを新規作成した。

 作成したフォームでは、通常のウィンドウ・スタイルを、スプラッシュ・スクリーン用のスタイルに切り替える必要がある。これには、次の画面例の手順に沿ってプロパティを設定していけばよい。

スプラッシュ・スクリーン表示のためのプロパティ設定手順
フォームを、通常のウィンドウ・スタイルの表示から、スプラッシュ・スクリーン用のスタイルの表示に切り替える。
  Windowsフォーム・デザイナ上でフォームをクリックして選択する。
  [プロパティ]ウィンドウでTextプロパティの値を変更する(本稿では「SplashScreen」と設定した)。ここで設定したTextプロパティのテキストは、タスク・バーに現れるタブ上に表示されることになる。なお、これがタスク・バーに表示されないようにするには、ShowInTaskbarプロパティを「false」に設定すればよい。
  FormBorderStyleプロパティを「None」に設定する。これにより、通常のウィンドウ画面にある外枠のフレームがなくなり、ビットマップのみが枠なしで表示されるようになる。
  BackgroundImageプロパティに適切な画像を設定する(本稿では「dotnet_design.gif」を設定した)。画像の指定は、プロパティ項目をクリックして表示される[...]ボタンをクリックして行う。
  StartPositionプロパティの値を「CenterScreen」に変更する。これにより、スプラッシュ・スクリーンがデスクトップ画面の中央に表示されるようになる。
  Sizeプロパティの値をビットマップの実サイズに合わせて変更する(本稿では「490, 330」と設定し、横490ピクセル×縦330ピクセルにしている)。これによりビットマップ画像全体が表示されるようになる。

 次にアプリケーションの起動状況を表示するためのLabelコントロールを追加して、次の画面のようにプロパティを設定しよう。

アプリケーションの起動状況表示の設定
アプリケーションの起動状況を表示するためのLabelコントロールを追加して、この画面のようにしてプロパティの設定を行う。
  Windowsフォーム・デザイナ上でLabelコントロールをクリックして選択する。
  [プロパティ]ウィンドウでBackColorプロパティを「Transparent」(透明)に設定する。これにより、文字の背景が透けて見えるようになる。
  Textプロパティを適切な値に設定する(本稿の例では「ready」とした)。

 さらに、この起動状況表示のテキストをプロパティ経由で更新できるようにしておく。これには、スプラッシュ・スクリーンのクラス(本稿では「SplashScreenクラス」)の中に、次のようなコードを追加すればよい。

public string ProgressMsg
{
  set
  {
    label1.Text = value;
  }
}
起動状況表示のテキストを更新するプロパティのサンプル・コード(C#)

Public WriteOnly Property ProgressMsg() As String
  Set(ByVal Value As String)
    label1.Text = Value
  End Set
End Property
起動状況表示のテキストを更新するプロパティのサンプル・コード(VB.NET)

 以上でスプラッシュ・スクリーンのクラスの実装は完了だ。後はこのスプラッシュ・スクリーンを実際に呼び出して表示するコードを実装すればよい。これには、メイン・ウィンドウとなるフォームのLoadイベント・ハンドラなどに次のようなコードを記述すればよい。

private void Form1_Load(object sender, System.EventArgs e)
{
  // スプラッシュ・スクリーンの表示開始
  SplashScreen splash = new SplashScreen();
  splash.Show();
  splash.Refresh();

  // スプラッシュ・スクリーン上の表示を更新
  // (スプラッシュ・スクリーンをしばらく表示する)
  string[] allfiles = Directory.GetFiles("C:\\Windows");
  foreach (string curfile in allfiles)
  {
    splash.ProgressMsg = curfile + " を読み込み中……";
    Application.DoEvents();
    Thread.Sleep(10);
  }

  // スプラッシュ・スクリーンの表示終了
  splash.Close();
  splash.Dispose();

  // メインとなるフォームをアクティブに戻す
  this.Activate();
}
スプラッシュ・スクリーンを呼び出して表示するサンプル・コード(C#)
実際にスプラッシュ・スクリーンを実装する際には、太字部分が最低限必要で、それ以外のコードは用途に応じて変更してほしい。なおこのサンプル・コードでは、アプリケーションの起動状況を表示する例として、「C:\Windows」フォルダ内のすべてのファイルの名前を使って「<ファイル名> を読み込み中……」というテキスト表示を行い、それを10ミリ秒ごとに更新している。
 
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

  ' スプラッシュ・スクリーンの表示開始
  Dim splash = New SplashScreen
  splash.Show()
  splash.Refresh()

  ' スプラッシュ・スクリーン上の表示を更新

  ' (スプラッシュ・スクリーンをしばらく表示する)
  Dim allfiles() As String = Directory.GetFiles("C:\Windows")
  Dim curfile As String
  For Each curfile In allfiles
    splash.ProgressMsg = curfile & " を読み込み中……"
    Application.DoEvents()
    Thread.Sleep(10)
  Next

  ' スプラッシュ・スクリーンの表示終了
  splash.Close()
  splash.Dispose()

  ' メインとなるフォームをアクティブに戻す

  Me.Activate()

End Sub
スプラッシュ・スクリーンを呼び出して表示するサンプル・コード(VB.NET)
実際にスプラッシュ・スクリーンを実装する際には、基本的に太字の部分のみが必要で、それ以外のコードは状況に応じて変更してほしい。なおこのサンプル・コードでは、アプリケーションの起動状況を表示する例として、「C:\Windows」フォルダ内のすべてのファイルの名前を使って「<ファイル名> を読み込み中……」というテキスト表示を行い、それを10ミリ秒ごとに更新している。

 以上でスプラッシュ・スクリーンの実装は完了だ。これをビルドして実行すれば、アプリケーションの起動時にスプラッシュ・スクリーンが表示される。End of Article

カテゴリ:Windowsフォーム 処理対象:ウィンドウ
使用ライブラリ:Formクラス(System.Windows.Forms名前空間)
 
この記事と関連性の高い別の.NET TIPS
Visual Basic 2005でスプラッシュ・スクリーンを表示するには?
WPFでスプラッシュ・スクリーンを表示するには?
Visual Basic 2005でスプラッシュ・スクリーンにメッセージを表示するには?
Visual Basic 2005でスプラッシュ・スクリーンの表示時間を変更するには?
起動時にタスクトレイのアイコンのみを表示するには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間