Функция _GDIPlus_FontCollectionGetFamilyList

         Описание функции


_GDIPlus_FontCollectionGetFamilyList

Получает объекты шрифтов, находящиеся в коллекции шрифтов

#Include <GDIP.au3>
_GDIPlus_FontCollectionGetFamilyList($hFontCollection)

Параметры

$hFontCollection Указатель на объект FontCollection

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

Успех:Возвращает массив объектов FontFamily:
[0] - Количество шрифтов в массиве
[1] - Первый объект FontFamily
[2] - Второй объект FontFamily
[n] - n-ый объект FontFamily
Ошибка:Возвращает -1, либо:
Если ошибка DllCall(), устанавливает @error и @extended возвращённые вызовом DllCall()
$GDIP_STATUS содержит не нулевое значение кода ошибки.
$GDIP_ERROR:
1 - Ошибка _GDIPlus_FontCollectionGetFamilyCount
2 - Коллекция шрифтов пуста
3 - $GDIP_STATUS содержит код ошибки функции _GDIPlus_FontCollectionGetFamilyList

См. также

Пример

#include <GDIP.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Global $iARGBBackground, $hGraphics, $aFontFamilies

_Example()

Func _Example()
    Local $hGUI, $hFontCollection

    ; Инициализирует библиотеку GDI+
    _GDIPlus_Startup()

    $hGUI = GUICreate("Получает объекты шрифтов", 400, 200)
    GUISetState()

    ; Создаёт графический объект из дескриптора окна
    $hGraphics = _GDIPlus_GraphicsCreateFromHWND($hGUI)

    ; Создаёт объект InstalledFontCollection, содержащий поддерживаемые системой шрифты
    $hFontCollection = _GDIPlus_FontCollectionCreate()

    ; Получает все шрифты
    $aFontFamilies = _GDIPlus_FontCollectionGetFamilyList($hFontCollection)

    ; Получает цвет фона стандартного диалогового окна
    $iARGBBackground = BitOR(0xFF000000, _WinAPI_GetSysColor($COLOR_BTNFACE))

    ; Теперь рисует 3 строки используя случайный шрифт каждые 2 секунды
    _PrintFonts()
    AdlibRegister("_PrintFonts", 2000)

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

    AdlibUnRegister("_PrintFonts")

    ; Освобождает ресурсы
    _GDIPlus_GraphicsDispose($hGraphics)

    ; Закрывает библиотеку GDI+
    _GDIPlus_Shutdown()
EndFunc

Func _PrintFonts()
    Local $iI, $iIndex, $iMaxIndex, $hFontFamily, $sFamilyName

    If IsArray($aFontFamilies) Then
        $iMaxIndex = $aFontFamilies[0]
        _GDIPlus_GraphicsClear($hGraphics, $iARGBBackground)

        For $iI = 1 To 3
            $iIndex = Random(1, $iMaxIndex, 1)

            ; Получает случайный объект шрифта из коллекции
            $hFontFamily = $aFontFamilies[$iIndex]
            ; Получает имя шрифта
            $sFamilyName = _GDIPlus_FontFamilyGetFamilyName($hFontFamily)
            ; Рисует имя шрифта, используя свой шрифт
            _GDIPlus_GraphicsDrawString($hGraphics, $sFamilyName, 20, $iI*40, $sFamilyName, 15)
        Next
    EndIf
EndFunc