Практическое руководство. Перебор установленных шрифтов

Класс InstalledFontCollection наследуется от абстрактного базового класса FontCollection. Объект InstalledFontCollection можно использовать для перечисления шрифтов, установленных на компьютере. Свойство Families объекта InstalledFontCollection является массивом объектов FontFamily.

Пример

В следующем примере перечислены имена всех семейств шрифтов, установленных на компьютере. Код извлекает свойство Nameкаждого объекта FontFamily в массиве, возвращаемом свойством Families. По мере извлечения имен семейств они объединяются для формирования списка с разделителями-запятыми. Затем метод DrawString класса Graphics рисует разделенный запятыми список в прямоугольнике.

При выполнении примера кода выходные данные будут выглядеть примерно так, как показано на следующем рисунке:

Screenshot that shows the installed font families.

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)

Компиляция кода

Предыдущий пример кода предназначен для работы с Windows Forms и требует PaintEventArgse, который является параметром PaintEventHandler. Кроме того, необходимо импортировать пространство имен System.Drawing.Text.

См. также