Help us understand the problem. What is going on with this article?

スプラッシュウィンドウの実装

More than 1 year has passed since last update.

さて、とりあえず実際に"ワンドロ開発"をやる・・・前に
サポート用のアプリケーションを作ってしまおう。
機能は簡単で、且つ手間をかけずに・・・

ところでスプラッシュウィンドウ作ったこと無かったね。
とか思いついてしまったので実装してみる。

スプラッシュウィンドウとは?

一言で言うと「起動直後に出てくる小さいロゴっぽいやつ」。
何やってるでもないんだけど、なんかあると気分が上がる。

本来の目的を一応述べておくと
「起動から操作可能になるまで時間がかかる場合に起動してること、起動シーケンスが走ってることを示す」のが目的。
今回の目的だと起動してからUI出るまで1秒かからないので本来必要なかったり。

でもやってみたいからやってみるっていうアグレッシヴさは大事だと思います。

実装に向けた調査結果

実装のために色々調べてみたところ、基本的な実装方針は以下の通り。

  1. 適当なフォーム作る
  2. プログラムのエントリーポイントからスプラッシュウィンドウを呼び出す。

うん。シンプル。

まずそれっぽいフォームをVisualStudioで作る。

それっぽいフォーム

で、それっぽいフォームがそれっぽい所以はこちら

フォームの枠が無い
  • コードで実装する場合 [Form名].FormBorderStyle = FormBorderStyle.None を設定。
  •  VisualStudioのGUIの場合 [Form名]のプロパティから[表示]-FormBorderStyleを選択し、Noneを設定する。(画像参照) スプラッシュフォームのプロパティ


画面の真ん中に表示される
  • コードで実装する場合 [Form名].StartPosition = FormStartPosition.CenterScreen を設定。
  •  VisualStudioのGUIの場合 [Form名]のプロパティから[表示]-StartPositionを選択し、CenterScreenを設定する。(画像参照) スプラッシュフォームのプロパティ


  • 中央にロゴっぽい漢字が出る。(ちなみに「くぐい」と読みます。白鳥のこと。古い呼び方なんだそうな。) フリーフォントの衡山毛筆フォント/武蔵システム様をお借りしました。

で、一定時間経ったら消す仕様にしたかったんですが
そういえばプログレスバー使ったことないね。
って思ったので以下略

今回はwindows.FormsのTimerとかデリゲート使って色々やってます、が、本筋から思いっきり外れるので割愛。

で、見事(無駄に長い時間)表示されるスプラッシュウィンドウが出来ました。

後はエントリーポイントに仕込むだけですね。

・・・の一文だけで済ますのもアレなので説明。

エントリーポイントとは、「プログラムが呼び出された際に初めに実行される関数/メソッドのこと」を言います。
で、通常はMain関数で、古いwindows用アプリケーションだとWinMain()だったりするそうな。
ちなみにVisualStudio2015で新規にWindowsフォームアプリケーションを作成した場合、
エントリーポイントはProgram.csのMainメソッドです。

そのうちエントリーポイントの確認方法とか記事書いた方がいいかも?

エントリーポイントに仕込むのは簡単で
フォームをNewしてRunの前にドーン!でOK。
(本来はほかの処理を裏でやってたりするのでモーダル表示じゃなくていいんだけど、今回はモーダルにして無理やり同期させてます。)

ドーン!

Application.EnableVisualStyles()とかApplication.SetCompatibleTextRenderingDefault()の前に仕込むと怒られます。
ここで描画の設定してんのね。

結果、起動後に見事スプラッシュ画面が(長々と)表示されるようになりましたとさ。

これが大体10秒続く


ちなみに、あまりに表示が長くてめんどくさかったのでGitHubに上げたソースだとここコメントアウトしてます。
作ってるときは楽しかったんだけどなぁ・・・

18/06/04 追記
編集リクエストありがとうございます!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした