Visual StudioでWindows フォーム アプリケーションのプロジェクトを新規作成して、フォームにコントロールを配置してテキストやキャプションを設定すると、コントトールやウィンドウの場所によって違ったフォントで表示されます。
コントールやウィンドウの特定の領域にはデフォルトのフォントが設定されているためです。
そこで今回は、Windowsのアプリケーションでフォームやダイアログボックスのテキストを表示する際に使用されるシステムフォントを取得する方法を紹介します。
目次
システムフォントの取得
システムフォントはSystem.Drawing名前空間にあるSystemFontsクラスのプロパティから取得できます。
キャプションフォント
キャプションフォントはCaptionFontプロパティから取得できます。
1 2 3 |
// キャプションのフォントを取得 System.Drawing.Font captionFont = System.Drawing.SystemFonts.CaptionFont; Console.WriteLine(captionFont); |
CaptionFontプロパティはウィンドウのタイトルバーにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
デフォルトフォント
デフォルトフォントはDefaultFontプロパティから取得できます。
1 2 3 |
// デフォルトのフォントを取得 System.Drawing.Font defaultFont = System.Drawing.SystemFonts.DefaultFont; Console.WriteLine(defaultFont); |
DefaultFontプロパティはアプリケーションのダイアログボックスおよびフォームにテキストを表示するために使用される既定のフォント(Fontオブジェクト)を返します。
ダイアログフォント
ダイアログフォントはDialogFontプロパティから取得できます。
1 2 3 |
// ダイアログのフォントを取得 System.Drawing.Font dialogFont = System.Drawing.SystemFonts.DialogFont; Console.WriteLine(dialogFont); |
DialogFontプロパティはアプリケーションのダイアログボックスおよびフォームにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
アイコンタイトルフォント
アイコンタイトルフォントはIconTitleFontプロパティから取得できます。
1 2 3 |
// アイコンタイトルのフォントを取得 System.Drawing.Font iconTitleFont = System.Drawing.SystemFonts.IconTitleFont; Console.WriteLine(iconTitleFont); |
IconTitleFontプロパティはアイコンのタイトルを表示するために使用されるフォント(Fontオブジェクト)を返します。
メニューフォント
メニューフォントはMenuFontプロパティから取得できます。
1 2 3 |
// メニューのフォントを取得 System.Drawing.Font menuFont = System.Drawing.SystemFonts.MenuFont; Console.WriteLine(menuFont); |
MenuFontプロパティはメニューにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
メッセージボックスフォント
メッセージボックスフォントはMessageBoxFontプロパティから取得できます。
1 2 3 |
// メッセージボックスのフォントを取得 System.Drawing.Font messageBoxFont = System.Drawing.SystemFonts.MessageBoxFont; Console.WriteLine(messageBoxFont); |
MessageBoxFontプロパティはメッセージボックスにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
スモールキャプションフォント
スモールキャプションフォントはSmallCaptionFontプロパティから取得できます。
1 2 3 |
// 小さいキャプションのフォントを取得 System.Drawing.Font smallCaptionFont = System.Drawing.SystemFonts.SmallCaptionFont; Console.WriteLine(smallCaptionFont); |
SmallCaptionFontプロパティはツールウィンドウなどの小さなウィンドウのタイトルバーにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
ステータスフォント
ステータスフォントはStatusFontプロパティから取得できます。
1 2 3 |
// ステータスのフォントを取得 System.Drawing.Font statusFont = System.Drawing.SystemFonts.StatusFont; Console.WriteLine(statusFont); |
StatusFontプロパティはステータスバーにテキストを表示するために使用されるフォント(Fontオブジェクト)を返します。
コントロールのデフォルトフォントの取得
Windows フォーム アプリケーションのコントロールのデフォルトフォント(既定のフォント)は、System.Windows.Forms名前空間にあるControlクラスのDefaultFontメソッドで取得できます。
1 2 3 |
// コントロールのデフォルトのフォントを取得 System.Drawing.Font controlDefaultFont = System.Windows.Forms.Control.DefaultFont; Console.WriteLine(controlDefaultFont); |
システムフォント名からフォントを取得
システムフォントはSystem.Drawing名前空間にあるSystemFontsクラスGetFontByName静的メソッドで取得することもできます。
GetFontByName静的メソッドの引数には、”CaptionFont”や”MessageBoxFont”などのシステムフォントの名前を文字列で指定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// 名前からシステムフォントを取得 // キャプションフォントの取得 System.Drawing.Font captionFont = System.Drawing.SystemFonts.CaptionFont; // デフォルトフォントの取得 System.Drawing.Font defaultFont = System.Drawing.SystemFonts.DefaultFont; // ダイアログフォントの取得 System.Drawing.Font dialogFont = System.Drawing.SystemFonts.DialogFont; // アイコンタイトルフォントの取得 System.Drawing.Font iconTitleFont = System.Drawing.SystemFonts.IconTitleFont; // メニューフォントの取得 System.Drawing.Font menuFont = System.Drawing.SystemFonts.MenuFont; // メッセージボックスフォントの取得 System.Drawing.Font messageBoxFont = System.Drawing.SystemFonts.MessageBoxFont; // メッセージボックスフォントの取得 System.Drawing.Font smallCaptionFont = System.Drawing.SystemFonts.SmallCaptionFont; // スモールキャプションフォントの取得 System.Drawing.Font statusFont = System.Drawing.SystemFonts.StatusFont; |
サンプルプログラム
Windows フォーム アプリケーションを使ったサンプルプログラムを作成します。
サンプルプログラムでは、システムフォントの一覧をテキストボックスに表示します。
ユーザーインターフェース
フォームのデザインは次のようになります。
フォームにはMultilineプロパティをtrueに設定したテキストボックス(TextBoxコントロール)を配置します。
ソースコード
OnLoadメソッドをオーバーライドしてシステムフォントの一覧情報をテキストボックスに表示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; // System.Reflectionのusingを追加 using System.Reflection; namespace WindowsFormsApp1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); // ReflectionでSystemFontsの全てのプロパティを取得 Type type = typeof(SystemFonts); PropertyInfo[] propertyInfos = type.GetProperties(); StringBuilder stringBuilder = new StringBuilder(); // 取得したプロパティをループ foreach (PropertyInfo propertyInfo in propertyInfos) { // システムフォント名を取得 string systemFontName = propertyInfo.Name; stringBuilder.AppendLine(systemFontName); // システムフォント名からフォントオブジェクトを取得 Font systemFont = SystemFonts.GetFontByName(systemFontName); stringBuilder.AppendLine(systemFont.ToString()); stringBuilder.AppendLine("------------------------------"); } // フォント情報の一覧をテキストボックスに表示 textBox1.Text = stringBuilder.ToString(); } } } |
サンプルプログラムの実行
プロジェクトを実行します。
サンプルプログラムを実行した結果、デフォルトフォント(DefaultFont)とダイアログフォント(DialogFont)のみ「MS UI Gothic」になっているのがわかります。その他は「Yu Gothic UI」になっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
CaptionFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ SmallCaptionFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ MenuFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ StatusFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ MessageBoxFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ IconTitleFont [Font: Name=Yu Gothic UI, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False] ------------------------------ DefaultFont [Font: Name=MS UI Gothic, Size=9, Units=3, GdiCharSet=128, GdiVerticalFont=False] ------------------------------ DialogFont [Font: Name=MS UI Gothic, Size=9, Units=3, GdiCharSet=128, GdiVerticalFont=False] ------------------------------ |