Функция CreateFont

Declare Function CreateFont Lib "gdi32" Alias "CreateFontA" (ByVal nHeight As Long, _
    ByVal nWidth As Long, ByVal nEscapement As Long, _
	ByVal nOrientation As Long, ByVal fnWeight As Long, _
	ByVal fdwItalic As Long, ByVal fdwUnderline As Long, _
	ByVal fdwStrikeOut As Long, ByVal fdwCharSet As Long, _
	ByVal fdwOutputPrecision As Long, ByVal fdwClipPrecision As Long, _
	ByVal fdwQuality As Long, ByVal fdwPitchAndFamily As Long, _
	ByVal lpszFace As String) As Long

CreateFont создает логический шрифт с заданными характеристиками. Не забывайте удалять шрифт с помощью DeleteObject после завершения работы со шрифтом.

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

В успешном случае возвращается описатель логического шрифта. В случае ошибки возвращается 0 (используйте GetLastError для получения кода ошибки).

Параметры

nHeight
Высота шрифта в логических единицах (также известна как em. Если значение положительно, то относится к размерам ячейки. Если отрицательно, то относится к размерам символа. Если равно 0, то используется высота по умолчанию
nWidth
Ширина шрифта в логических единицах
nEscapement
Угол нанесения текста – угол между базовой линией текста и горизонталью (десятые доли градуса) Windows 95/98: Должно быть равным lfOrientation
nOrientation
Наклон символов (десятые доли градуса) Windows 95/98: Должно быть равным lfEscapement
fnWeight
Один из флагов, определяющих жирность шрифта в пределах от 0 до 1000:
FW_DONTCARE = 0
По умолчанию
FW_THIN = 100
Нежирный
FW_EXTRALIGHT = 200
Небольшая жирность
FW_ULTRALIGHT = 200
Аналогично FW_EXTRALIGHT
FW_LIGHT = 300
Легкая жирность
FW_NORMAL = 400
Нормальная жирность
FW_REGULAR = 400
Аналогично FW_NORMAL
FW_MEDIUM = 500
Средняя жирность
FW_SEMIBOLD = 600
Выше среднего
FW_DEMIBOLD = 600
Аналогично FW_SEMIBOLD
FW_BOLD = 700
Жирный
FW_EXTRABOLD = 800
Очень жирный
FW_ULTRABOLD = 800
Аналогично FW_EXTRABOLD
FW_HEAVY = 900
Чрезвычайно жирный
FW_BLACK = 900
Аналогично FW_HEAVY
fdwItalic
Ненулевое значение означает курсив
fdwUnderline
Ненулевое значение означает подчеркивание
fdwStrikeOut
Ненулевое значение означает перечеркнутый шрифт
fdwCharSet
Один из флагов, задающих кодировку шрифта:
ANSI_CHARSET = 0
Кодировка Windows ANSI
ARABIC_CHARSET = 178
Windows NT/2000: Арабская
BALTIC_CHARSET = 186
Windows 95/98/Me: Балтийская
CHINESEBIG5_CHARSET = 136
Chinese Big 5 character set
DEFAULT_CHARSET = 1
По умолчанию
EASTEUROPE_CHARSET= 238
Windows 95/98/Me: Eastern European character set
GB2312_CHARSET
GB2312 character set
GREEK_CHARSET
Windows 95/98/Me: Греческая
HANGEUL_CHARSET
HANDEUL character set
HEBREW_CHARSET
Windows NT/2000: Hebrew character set
JOHAB_CHARSET
Windows 95/98/Me: Johab character set
MAC_CHARSET
Windows 95/98/Me: Mac character set
OEM_CHARSET
Original equipment manufacturer (OEM) character set
RUSSIAN_CHARSET = 204
Windows 95/98/Me: Русская кодировка
SHIFTJIS_CHARSET
ShiftJis character set
SYMBOL_CHARSET
Symbol character set
THAI_CHARSET
Windows NT/2000: Thai character set
TURKISH_CHARSET
Windows 95/98/Me: Турецкая
fdwOutPrecision
Один из флаго, определяющих соответствие запрашиваемого шрифта и имеющегося в наличии
OUT_DEFAULT_PRECIS = 0The default font mapping behavior
OUT_DEVICE_PRECIS = 5Choose a device font if there are multiple fonts in the system with the same name
OUT_OUTLINE_PRECIS = 8Choose a TrueType or other outline-based font
OUT_RASTER_PRECIS = 6Choose a raster font if there are multiple fonts in the system with the same name
OUT_STRING_PRECIS = 1Raster font (used for enumeration only)
OUT_STROKE_PRECIS = 3TrueType, outline-based, or vector font (used for enumeration only)
OUT_TT_ONLY_PRECIS = 7Только шрифты TrueType
OUT_TT_PRECIS = 4Choose a TrueType font if there are multiple fonts in the system with the same name
fdwClipPrecision
Один из флагов, определяющих способ “обрезания” изображения литер при их выходе за пределы области ограниченного вывода:
CLIP_DEFAULT_PRECIS
The default clipping behavior
CLIP_EMBEDDED = 128
This flag must be set for an embedded read-only font
CLIP_LH_ANGLES = 16
The direction of any rotations is determined by the coordinate system (or else all rotations are counterclockwise)
CLIP_STROKE_PRECIS = 2
Raster, vector, or TrueType font (used for enumeration only)
fdwQuality
Один из флагов, определяющих качество воспроизведения шрифта:
ANTIALIASED_QUALITY = 4
The font is always antialiased if possible.
DEFAULT_QUALITY = 0
По умолчанию. Качесто не существенно
DRAFT_QUALITY = 1
Шрифт чернового качества
NONANTIALIASED_QUALITY = 3
The font is never antialiased.
PROOF_QUALITY = 2
Шрифт чистового качества
fdwPitchAndFamily
Параметр определяет, будет ли шрифт иметь фиксированную или переменную ширину литер, а также семейство, к которому принадлежит шрифт. Возможна комбинация битов с помощью OR флагов *_PITCH с флагом FF_*:
DEFAULT_PITCH = 0
По умолчанию
FIXED_PITCH = 1
Моноширный шрифт
VARIABLE_PITCH = 2
Пропорциональный шрифт
FF_DECORATIVE = 80
Showy, decorative font face
FF_DONTCARE = 0
Do not care about the font face
FF_MODERN
Modern font face (monospaced, sans serif font)
FF_ROMAN =16
Roman font face (proportional-width, serif font)
FF_SCRIPT = 64
Script font face which imitates script handwriting
FF_SWISS = 32
Swiss font face (proportional-width, sans serif font)
lpszFace
Имя шрифта

Пример

' Создадим процедуру
Private Sub DrawRotatedText(ByVal txt As String, _
    ByVal hgt As Long, ByVal wid As Long, _
    ByVal X As Single, ByVal Y As Single, _
    ByVal font_name As String, _
    ByVal weight As Long, ByVal escapement As Long, _
    ByVal use_italic As Boolean, ByVal use_underline As Boolean, _
    ByVal use_strikethrough As Boolean)

 Const CLIP_LH_ANGLES = 16
 Const PI = 3.14159625
 Const PI_180 = PI / 180

 Dim newfont As Long
 Dim oldfont As Long

 newfont = CreateFont(hgt, wid, _
        escapement, escapement, weight, _
        use_italic, use_underline, _
        use_strikethrough, 204, 0, _
        CLIP_LH_ANGLES, 0, 0, font_name)
    
' Выбираем новый шрифт
 oldfont = SelectObject(hdc, newfont)
    
' Выводим текст
 CurrentX = X
 CurrentY = Y
 Print txt

' Восстанавливаем шрифт
 newfont = SelectObject(hdc, oldfont)
    
' Освобождаем ресурсы
 DeleteObject newfont
End Sub

Private Sub Form_Load()
 Const PI = 3.14159625
 Const FW_NORMAL = 400

 Dim I As Long
 Dim cx As Long
 Dim cy As Long

    AutoRedraw = True

    cx = ScaleWidth - 50
    cy = ScaleHeight - 50
    For I = 90 To 180 Step 20
        DrawRotatedText "       Русский_Проект", 20, 0, _
            cx + Cos(I / 180 * PI), _
            cy + Sin(I / 180 * PI), _
            "Times New Roman", FW_NORMAL, I * 10, _
            False, False, False
    Next I
End Sub

Смотри также

CreateFontIndirect

Категория

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

Реклама

справка в бассейн 300 руб, с 8 до .