方法: インストールされているフォントを列挙するHow to: Enumerate Installed Fonts

InstalledFontCollection クラスは、FontCollection 抽象基本クラスを継承します。The InstalledFontCollection class inherits from the FontCollection abstract base class. InstalledFontCollection オブジェクトを使用すると、コンピューターにインストールされているフォントを列挙できます。You can use an InstalledFontCollection object to enumerate the fonts installed on the computer. InstalledFontCollection オブジェクトの Families プロパティは、FontFamily オブジェクトの配列です。The Families property of an InstalledFontCollection object is an array of FontFamily objects.

Example

次の例では、コンピューターにインストールされているすべてのフォント ファミリの名前を一覧表示しています。The following example lists the names of all the font families installed on the computer. このコードを実行すると、Families プロパティによって返される配列内の各 FontFamily オブジェクトの Name プロパティが取得されます。The code retrieves the Name property of each FontFamily object in the array returned by the Families property. ファミリ名が取得されると、それらが連結され、コンマ区切りのリストが形成されます。As the family names are retrieved, they are concatenated to form a comma-separated list. その後、Graphics クラスの DrawString メソッドによって、コンマ区切りのリストが四角形の中に描画されます。Then the DrawString method of the Graphics class draws the comma-separated list in a rectangle.

このコード例を実行すると、出力は次の図に示すようになります。If you run the example code, the output will be similar to that shown in the following illustration:

インストールされているフォント ファミリを示すスクリーンショット。

FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(
   fontFamily,
   8,
   FontStyle.Regular,
   GraphicsUnit.Point);
RectangleF rectF = new RectangleF(10, 10, 500, 500);
SolidBrush solidBrush = new SolidBrush(Color.Black);

string familyName;
string familyList = "";
FontFamily[] fontFamilies;

InstalledFontCollection installedFontCollection = new InstalledFontCollection();

// Get the array of FontFamily objects.
fontFamilies = installedFontCollection.Families;

// The loop below creates a large string that is a comma-separated
// list of all font family names.

int count = fontFamilies.Length;
for (int j = 0; j < count; ++j)
{
    familyName = fontFamilies[j].Name;
    familyList = familyList + familyName;
    familyList = familyList + ",  ";
}

// Draw the large string (list of all families) in a rectangle.
e.Graphics.DrawString(familyList, font, solidBrush, rectF);
Dim fontFamily As New FontFamily("Arial")
Dim font As New Font( _
   fontFamily, _
   8, _
   FontStyle.Regular, _
   GraphicsUnit.Point)
Dim rectF As New RectangleF(10, 10, 500, 500)
Dim solidBrush As New SolidBrush(Color.Black)

Dim familyName As String
Dim familyList As String = ""
Dim fontFamilies() As FontFamily

Dim installedFontCollection As New InstalledFontCollection()

' Get the array of FontFamily objects.
fontFamilies = installedFontCollection.Families

' The loop below creates a large string that is a comma-separated
' list of all font family names.
Dim count As Integer = fontFamilies.Length
Dim j As Integer

While j < count
    familyName = fontFamilies(j).Name
    familyList = familyList & familyName
    familyList = familyList & ",  "
    j += 1
End While

' Draw the large string (list of all families) in a rectangle.
e.Graphics.DrawString(familyList, font, solidBrush, rectF)

コードのコンパイルCompiling the Code

前の例は、Windows フォームで使用するために設計されていて、PaintEventHandler のパラメーターである PaintEventArgs e を必要とします。The preceding example is designed for use with Windows Forms, and it requires PaintEventArgs e, which is a parameter of PaintEventHandler. また、System.Drawing.Text 名前空間をインポートする必要があります。In addition, you should import the System.Drawing.Text namespace.

関連項目See also