|
.NET TIPS
Windowsアプリケーションでスプラッシュ・スクリーンを表示するには?
デジタルアドバンテージ
2004/10/29 |
|
|
Windowsアプリケーションでは、アプリケーションの起動時に、次の画面のようなビットマップが表示されることがある。例えば、Visual Studio .NET(以降、VS.NET)の起動時にも、「Visual Studio .net」などと書かれたビットマップ画面が表示されているはずだ。一般的に、起動時に表示されるこのビットマップ画面は「スプラッシュ・スクリーン」と呼ばれ、多くの場合、アプリケーションの起動状況なども表示される。
|
Windowsアプリケーション起動時に表示されるスプラッシュ・スクリーンの例 |
アプリケーションの起動時に、このようなビットマップが表示されることがある。例えば、VS.NETの起動時にも、このようなビットマップ画面が表示されているはずだ。 |
|
|
起動処理の進行状況を表示するLabelコントロール。このようにスプラッシュ・スクリーン上に起動状況を表示することで、ユーザーが待たされてストレスを感じるのを軽減できる場合がある。特に起動に時間がかかるアプリケーションで有効な手法である。 |
|
本稿では、このようなスプラッシュ・スクリーンの表示を、Windowsアプリケーションで行う方法を紹介する。なお、VS.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ミリ秒ごとに更新している。 |
以上でスプラッシュ・スクリーンの実装は完了だ。これをビルドして実行すれば、アプリケーションの起動時にスプラッシュ・スクリーンが表示される。
カテゴリ:Windowsフォーム 処理対象:ウィンドウ
使用ライブラリ:Formクラス(System.Windows.Forms名前空間) |
|
generated by
|
|
Insider.NET 記事ランキング
本日
月間