Функция 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 = 0 | The default font mapping behavior
|
OUT_DEVICE_PRECIS = 5 | Choose a device font if there are multiple fonts in the system with the same name
|
OUT_OUTLINE_PRECIS = 8 | Choose a TrueType or other outline-based font
|
OUT_RASTER_PRECIS = 6 | Choose a raster font if there are multiple fonts in the system with the same name
|
OUT_STRING_PRECIS = 1 | Raster font (used for enumeration only)
|
OUT_STROKE_PRECIS = 3 | TrueType, outline-based, or vector font (used for enumeration only)
|
OUT_TT_ONLY_PRECIS = 7 | Только шрифты TrueType
|
OUT_TT_PRECIS = 4 | Choose 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 до .