C# と .NET Framework 4 を主にWindows Formのアプリケーション開発について

2006年8月 8日

アイコンでステータス表示 : RSSリーダを.NET Framework 2.0で作る (第13回) アイコンでステータス表示 : RSSリーダを.NET Framework 2.0で作る (第13回)

今回のトピック

  1. 画像をフォームに表示する
  2. フォームの背景画像の設定


MicroRssReaderのメインフォームは、16×16の小さいフォームですが、新着がある等の状態がわかるように表示するイメージを変更するようにします。

アイコンは状態により次のように変化するようにします。

イメージ状態
idleアイドリング状態
syncRSSダウンロード状態
new新着状態
idleエラー発生状態

画像をイメージリストに取り込む

IconForm.csをデザイナで開いて、ツールボックスからImageListを追加します。

追加したイメージリストのプロパティを表示して、Imagesコレクションをクリックして「イメージ コレクション エディタ」を表示し、”アイドル”、”ダウンロード”、”新着”、”エラー”の順に追加していきます。

Image collection editor

これで、画像を取り込むことが出来ました。
必ずしもこの方法でなくとも画像を取り込むことが出来ます。例えば、Settingsに入れたり、埋め込みリソースにしたりする方法があります。


取り込んだ画像をフォームに表示する


フォームに画像を表示する場合、
  1. 背景画像にする
  2. OnPaintをオーバーライドして自分で描く
  3. イメージコントロールを配置して任せる

等の方法があります。
今回の場合、フォームのサイズと画像サイズが同じであるため、一番簡単な「背景画像にする」方法をとります。

フォーム自体がMicroRssReaderのステータス管理を意識しないようにするため、publicメソッドで外部から指定するようにします。
enumを指定できるようにすることも出来ますが、今回は個別のメソッドに分けました。

IconFormクラスに次のメソッドを追加: _iconListフィールドはImageListオブジェクトです。

#region 表示モードの変更
public void SetModeIdle()
{
BackgroundImage = _iconList.Images[0];
}
public void SetModeSync()
{
BackgroundImage = _iconList.Images[1];
}
public void SetModeNewEntry()
{
BackgroundImage = _iconList.Images[2];
}
public void SetModeError()
{
BackgroundImage = _iconList.Images[3];
}
#endregion

これで、ステータスが変化したときメインフォーム(IconForm)の表示状態を変更することが出来ます。

3 Comments

PHPプログラマーがはじめてC#をインスコしたばっかりで、とりあえずRSSリーダーでも勉強がてらと思い、Googleからたどり着きました。

いやぁ、アプリケーションプログラムなんて初めてなんで分からないことだらけですが、とっても参考になります。って、もしかしてこの回で終わりーー!?残念です(T-T)

でも、大変参考にさせていただいてます。ありがとうございます。

生徒さん、はじめまして。
コメントありがとうございます。
最近ちょっと力尽きていまして、どうにも更新できずにいましたが、年が明けたら余裕がでそうな感じです。

それにしても見てくださる方がいるのが分かってうれしいです。

今後とも、宜しくお願いします。

NaggySpice様、こんにちは
C#の入門サイトは数あれど、UIや速度etcの検証も含めてきちんと書かれているところは初めて見ました。当方、その辺はテキトーだったりするもので、「やっぱそうだよね・・・。ちゃんとやんなきゃね・・・」と自省させていただきました(笑)

再開、楽しみにして気長に待ってます。それまでにはもう少しC#、勉強して出直してきます(笑)

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)

トラックバックURL

このエントリーのトラックバックURL:
http://www.cs-dotnet.com/cgi-bin/mt-tb.cgi/82