インストールされているフォントを取得するInstalledFontCollectionクラスを使用することにより、コンピュータにインストールされているフォントを列挙できます。InstalledFontCollectionクラスのFamiliesプロパティは、FontFamilyオブジェクトの配列となります。FontFamily(フォントファミリア)とは、「基本デザインが同様でスタイルが異なるタイプフェイスのグループ」(フォント ファミリとフォントの作成より)ということです。 次の例では、インストールされているすべてのフォントファミリアを取得し、その内スタイルにRegular(標準テキスト)が使用できるフォントの名前をそのフォントでピクチャボックスに表示しています。なお、「方法 : インストールされているフォントを列挙する」にも同じような例がありますので、そちらも参考にしてください。 'Imports System.Drawing 'がソースファイルの一番上に書かれているものとする 'PictureBox1のGraphicsオブジェクトを取得 Dim g As Graphics = PictureBox1.CreateGraphics() 'InstalledFontCollectionオブジェクトの取得 Dim ifc As New System.Drawing.Text.InstalledFontCollection 'インストールされているすべてのフォントファミリアを取得 Dim ffs As FontFamily() = ifc.Families Dim y As Integer = 0 Dim ff As FontFamily For Each ff In ffs 'ここではスタイルにRegularが使用できるフォントのみを表示 If ff.IsStyleAvailable(FontStyle.Regular) Then 'Fontオブジェクトを作成 Dim fnt As New Font(ff, 8) 'フォント名をそのフォントで描画する g.DrawString(fnt.Name, fnt, Brushes.Black, 0, y) '次の表示位置を計算 y += CInt(fnt.GetHeight(g)) 'リソースを開放する fnt.Dispose() End If Next ff 'リソースを開放する g.Dispose() //using System.Drawing; //がソースファイルの一番上に書かれているものとする //PictureBox1のGraphicsオブジェクトを取得 Graphics g = PictureBox1.CreateGraphics(); //InstalledFontCollectionオブジェクトの取得 System.Drawing.Text.InstalledFontCollection ifc = new System.Drawing.Text.InstalledFontCollection(); //インストールされているすべてのフォントファミリアを取得 FontFamily[] ffs = ifc.Families; int y = 0; foreach (FontFamily ff in ffs) { //ここではスタイルにRegularが使用できるフォントのみを表示 if (ff.IsStyleAvailable(FontStyle.Regular)) { //Fontオブジェクトを作成 Font fnt = new Font(ff, 8); //フォント名をそのフォントで描画する g.DrawString(fnt.Name, fnt, Brushes.Black, 0, y); //次の表示位置を計算 y += (int) fnt.GetHeight(g); //リソースを開放する fnt.Dispose(); } } //リソースを開放する g.Dispose();
補足:FontStyle構造体には、次のようなメンバがあります。
指定したGraphicsオブジェクトで使用できるフォントを取得するフォントにはスクリーンでしか使えないフォントや、印刷でしか使えないフォントもあります。あるGraphicsオブジェクトで使用できるフォントファミリアは、FontFamily.GetFamiliesメソッドでFontFamilyオブジェクトの配列として取得できます。FontFamily.Familiesプロパティでは、現在のグラフィックスコンテキストに関連付けられているFontFamilyオブジェクトがすべて含まれている配列が取得できます。 次の例ではPictureBoxで使用できるフォントファミリアの名前をListBoxに表示しています。 'Imports System.Drawing 'がソースファイルの一番上に書かれているものとする 'PictureBox1のGraphicsオブジェクトを取得 Dim g As Graphics = PictureBox1.CreateGraphics() 'PictureBox1で使用できるFontFamily配列を取得 Dim ffs As FontFamily() = FontFamily.GetFamilies(g) '結果をListBoxに表示する Dim ff As FontFamily For Each ff In ffs ListBox1.Items.Add(ff.Name) Next ff 'リソースを開放する g.Dispose() //using System.Drawing; //がソースファイルの一番上に書かれているものとする //PictureBox1のGraphicsオブジェクトを取得 Graphics g = PictureBox1.CreateGraphics(); //PictureBox1で使用できるFontFamily配列を取得 FontFamily[] ffs = FontFamily.GetFamilies(g); //結果をListBoxに表示する foreach (FontFamily ff in ffs) { ListBox1.Items.Add(ff.Name); } //リソースを開放する g.Dispose();
注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。 |
|
Copyright(C) DOBON!. All rights reserved.
|