Поделиться через


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

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

Пример

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

Результат выполнения этого кода будет аналогичен приведенному на следующем рисунке.

Установленные шрифты

        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)

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);

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

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

См. также

Другие ресурсы

Шрифты и текст