DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

システムのアイコンを取得する

SystemIconsクラス(System.Drawing名前空間)のプロパティを参照することにより、Windowsのシステムのアイコン(既定のアプリケーションアイコン、エラーアイコン、疑問符アイコンなど)のIconオブジェクトを取得することができます。

次の例ではSystemIconsクラスから取得できる各アイコンを順番にPictureBox1に表示しています。

VB.NET
コードを隠すコードを選択
'Imports System.Drawing

'システムのアイコンを表示する

'描画先とするImageオブジェクトを作成する
Dim canvas As New Bitmap(PictureBox1.Width, PictureBox1.Height)
'ImageオブジェクトのGraphicsオブジェクトを作成する
Dim g As Graphics = Graphics.FromImage(canvas)

'既定のアプリケーションアイコン(WIN32: IDI_APPLICATION)
g.DrawIcon(SystemIcons.Application, 0, 0)
'システムのアスタリスクアイコン(WIN32: IDI_ASTERISK)
g.DrawIcon(SystemIcons.Asterisk, 40, 0)
'システムのエラーアイコン(WIN32: IDI_ERROR)
g.DrawIcon(SystemIcons.Error, 80, 0)
'システムの感嘆符アイコン(WIN32: IDI_EXCLAMATION)
g.DrawIcon(SystemIcons.Exclamation, 120, 0)
'システムの手の形のアイコン(WIN32: IDI_HAND)
g.DrawIcon(SystemIcons.Hand, 160, 0)
'システムの情報アイコン(WIN32: IDI_INFORMATION)
g.DrawIcon(SystemIcons.Information, 200, 0)
'システムの疑問符アイコン(WIN32: IDI_QUESTION)
g.DrawIcon(SystemIcons.Question, 240, 0)
'システムの警告アイコン(WIN32: IDI_WARNING)
g.DrawIcon(SystemIcons.Warning, 280, 0)
'Windowsのロゴアイコン(WIN32: IDI_WINLOGO)
g.DrawIcon(SystemIcons.WinLogo, 320, 0)

g.Dispose()

'PictureBox1に表示する
PictureBox1.Image = canvas
C#
コードを隠すコードを選択
//using System.Drawing;

//システムのアイコンを表示する

//描画先とするImageオブジェクトを作成する
Bitmap canvas = new Bitmap(PictureBox1.Width, PictureBox1.Height);
//ImageオブジェクトのGraphicsオブジェクトを作成する
Graphics g = Graphics.FromImage(canvas);

//既定のアプリケーションアイコン(WIN32: IDI_APPLICATION)
g.DrawIcon(SystemIcons.Application, 0, 0);
//システムのアスタリスクアイコン(WIN32: IDI_ASTERISK)
g.DrawIcon(SystemIcons.Asterisk, 40, 0);
//システムのエラーアイコン(WIN32: IDI_ERROR)
g.DrawIcon(SystemIcons.Error, 80, 0);
//システムの感嘆符アイコン(WIN32: IDI_EXCLAMATION)
g.DrawIcon(SystemIcons.Exclamation, 120, 0);
//システムの手の形のアイコン(WIN32: IDI_HAND)
g.DrawIcon(SystemIcons.Hand, 160, 0);
//システムの情報アイコン(WIN32: IDI_INFORMATION)
g.DrawIcon(SystemIcons.Information, 200, 0);
//システムの疑問符アイコン(WIN32: IDI_QUESTION)
g.DrawIcon(SystemIcons.Question, 240, 0);
//システムの警告アイコン(WIN32: IDI_WARNING)
g.DrawIcon(SystemIcons.Warning, 280, 0);
//Windowsのロゴアイコン(WIN32: IDI_WINLOGO)
g.DrawIcon(SystemIcons.WinLogo, 320, 0);

g.Dispose();

//PictureBox1に表示する
PictureBox1.Image = canvas;

結果として、例えばWindows 2000では次のように表示されました。
SystemIconsの表示 (Windows 2000)

Windows 7では次のように表示されました。
SystemIconsの表示 (Windows 7)

表にまとめると、次のようになります。

SystemIconsメンバ 画像 説明 WIN32
Application 既定のアプリケーション アイコン IDI_APPLICATION
Asterisk システムのアスタリスク アイコン IDI_ASTERISK
Error システムのエラー アイコン IDI_ERROR
Exclamation システムの感嘆符アイコン IDI_EXCLAMATION
Hand システムの手の形のアイコン IDI_HAND
Information システムの情報アイコン IDI_INFORMATION
Question システムの疑問符アイコン IDI_QUESTION
Warning システムの警告アイコン IDI_WARNING
WinLogo Windows のロゴ アイコン IDI_WINLOGO
Shield ユーザー アカウント制御 (UAC: User Account Control) のシールド アイコン
.NET Framework 3.5から追加
補足:WinLogoはWindows XPから既定のアプリケーションアイコンと同じになりました。詳しくは「Microsoft Windows ロゴ アイコンの代わりに汎用的なウィンドウのアイコンが表示されます。」をご覧ください。
  • 履歴:
  • 2006/11/28 表を追加。
  • 2011/12/16 Shieldプロパティの説明を追加。WinLogoの補足を追加。アイコンの画像をWindows 7のものに変更。
  • 2012/8/4 表示する方法を、PictureBox.Imageプロパティを使った方法に変更。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • このサイトで紹介されているコードの多くは、例外処理が省略されています。例外処理については、こちらをご覧ください。
  • コードの先頭に記述されている「Imports ??? がソースファイルの一番上に書かれているものとする」(C#では、「using ???; がソースファイルの一番上に書かれているものとする」)の意味が分からないという方は、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。