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


Метод PrivateFontCollection::AddFontFile (gdiplusheaders.h)

Метод PrivateFontCollection::AddFontFile добавляет файл шрифта в эту частную коллекцию шрифтов.

Синтаксис

Status AddFontFile(
  [in] const WCHAR *filename
);

Параметры

[in] filename

Тип: const WCHAR*

Указатель на строку расширенных символов, указывающую имя файла шрифта.

Возвращаемое значение

Тип: Состояние

В случае успешного выполнения метода возвращается ОК, который является элементом перечисления Status .

Если метод завершается ошибкой, он возвращает один из других элементов перечисления Status .

Комментарии

При использовании API GDI+ никогда не следует разрешать приложению скачивать произвольные шрифты из ненадежных источников. Операционной системе требуются повышенные привилегии, чтобы гарантировать, что все установленные шрифты являются доверенными.

Примеры

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

VOID Example_AddFontFile(HDC hdc)
{
   Graphics              graphics(hdc);
   SolidBrush            solidBrush(Color(255, 0, 0, 0));
   INT                   found = 0;
   INT                   count = 0;
   WCHAR                 familyName[50];
   FontFamily*           pFontFamily;
   PrivateFontCollection privateFontCollection;

   // Add three font files to the private collection.
   privateFontCollection.AddFontFile(L"C:\\WINNT\\Fonts\\Arial.ttf");
   privateFontCollection.AddFontFile(L"C:\\WINNT\\Fonts\\Cour.ttf");
   privateFontCollection.AddFontFile(L"C:\\WINNT\\Fonts\\Times.ttf");

   // How many font families are in the private collection?
   count = privateFontCollection.GetFamilyCount();

   // Allocate a buffer to hold the array of FontFamily objects returned by
   // the GetFamilies method.
   pFontFamily = (FontFamily*)malloc(count * sizeof(FontFamily));

   // Get the array of FontFamily objects.
   privateFontCollection.GetFamilies(count, pFontFamily, &found);

   for(INT j = 0; j < found; ++j)
   {
      // Get the font family name.
      pFontFamily[j].GetFamilyName(familyName);
   
      // Pass the family name and the address of the private collection to a
      // Font constructor.
      Font* pFont = new Font(familyName, 16, FontStyleRegular,
                             UnitPixel, &privateFontCollection);

      // Use the font to draw a string.
      graphics.DrawString(
                          L"Hello", 
                          5,          // string length 
                          pFont, 
                          PointF(10.0f, (REAL)j*25), 
                          &solidBrush);

      delete(pFont);
   }

   free(pFontFamily);
}

Требования

   
Минимальная версия клиента Windows XP, Windows 2000 Профессиональная [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header gdiplusheaders.h (включая Gdiplus.h)
Библиотека Gdiplus.lib
DLL Gdiplus.dll

См. также раздел

Создание частной коллекции шрифтов

InstalledFontCollection

PrivateFontCollection

Использование текста и шрифтов