Как повернуть текст и изменить его свойства (толщина, шрифт, флаги...)
Приведу небольшой примерчик, и обьясню что к чему:
program TextOutPr;
uses
Windows;
var
lfont : LOGFONT;
font : HFONT;
dc : HDC;
begin
dc := GetDc(0);
lfont.lfHeight := 13;
lfont.lfWidth := 13;
lfont.lfEscapement := 500;
lfont.lfOrientation := 500;
lfont.lfWeight := FW_LIGHT;
lfont.lfItalic := 0;
lfont.lfUnderline := 0;
lfont.lfStrikeOut := 0;
lfont.lfCharSet := DEFAULT_CHARSET;
lfont.lfOutPrecision := OUT_DEFAULT_PRECIS;
lfont.lfClipPrecision := CLIP_DEFAULT_PRECIS;
lfont.lfQuality := DEFAULT_QUALITY;
lfont.lfPitchAndFamily := DEFAULT_PITCH;
lfont.lfFaceName := 'tahoma';
font := CreateFontIndirect(lfont);
SelectObject(dc, font);
SetBkMode(dc, TRANSPARENT);
SetTextColor(dc, 255);
TextOut(dc, 300, 300, 'HELLO WORLD!', length('HELLO WORLD!'));
DeleteObject(font);
DeleteDc(dc);
end.
Итак, я опишу лишь свойства шрифта, так как многое уже есть в других 'How to'.
lfont.lfHeight - высота шрифта в пикселах, если установить 0 - пропорция возьмётся по умолчанию, как в оригинальном шрифте.
lfont.lfWidth - ширина шрифта в пикселах, аналогично, если установить 0 - сохраняется пропорция по умолчанию.
lfont.lfEscapement - угол поворота - чтобы установить значение по градусам, нужно умножить исходное значение в градусах на 10, наример чтоб повернуть текст на 180 градусов, нужно установить значение параметра в 180 * 10 = 1800, то есть в 1800.
lfont.lfOrientation - определяет относительно какой точки (по x) поворачивать текст.
lfont.lfWeight - толщина символов, вот допустимые константы и их значения:
FW_DONTCARE = 0
FW_THIN = 100
FW_EXTRALIGHT = 200
FW_ULTRALIGHT = 200
FW_LIGHT = 300
FW_NORMAL = 400
FW_REGULAR = 400
FW_MEDIUM = 500
FW_SEMIBOLD = 600
FW_DEMIBOLD = 600
FW_BOLD = 700
FW_EXTRABOLD = 800
FW_ULTRABOLD = 800
FW_HEAVY = 900
FW_BLACK = 900
lfont.lfItalic - наклонность шрифта - если наклонный - значение 1 (true), если простой, то 0 (false)
lfont.lfUnderline - подчёркнутый шрифт - аналогично предыдущему - 1 - да, 0 - нет
lfont.lfStrikeOut - зачёркнутый шрифт - определяется аналогично
lfnt.lfCharSet - кодировка, вот допустимые значения:
ANSI_CHARSET
DEFAULT_CHARSET
SYMBOL_CHARSET
SHIFTJIS_CHARSET
GB2312_CHARSET
HANGEUL_CHARSET
CHINESEBIG5_CHARSET
OEM_CHARSET
lfont.lfOutPrecision - допустимые значения:
OUT_CHARACTER_PRECIS
OUT_DEFAULT_PRECIS
OUT_DEVICE_PRECIS
OUT_OUTLINE_PRECIS
OUT_RASTER_PRECIS
OUT_STRING_PRECIS
OUT_STROKE_PRECIS
OUT_TT_ONLY_PRECIS
OUT_TT_PRECIS
lfont.lfClipPrecision - допустимые значения:
CLIP_DEFAULT_PRECIS
CLIP_CHARACTER_PRECIS
CLIP_STROKE_PRECIS
CLIP_MASK
CLIP_EMBEDDED
CLIP_LH_ANGLES
CLIP_TT_ALWAYS
lfontALITY
DRAFT_QUALITY
PROOF_QUALITY
lfont.lfPitchAndFamily - допустимые значения:
DEFAULT_PITCH
FIXED_PITCH
VARIABLE_PITCH
VARIABLE_PIRCH может принимать несколько значений в комбинации, константы объединятся с помошью логической операции or, например VARIABLE_PIRCH or FF_ROMAN
FF_DECORATIVE
FF_DONTCARE
FF_MODERN
FF_ROMAN
FF_SCRIPT
FF_SWISS
FF_DECORATIVE
FF_DONTCARE
FF_MODERN
FF_ROMAN
FF_SCRIPT
FF_SWISS
lfont.lfFaceName - имя шрифта, напримет tahoma или courier new. Максимальная длинна имени - 35 символов Для того чтобы узнать все имена шрифтов, установленных в системе, можно использовать функцию EnumFontFamilies().
исходник - в исходнике дополнительно показано, как создать шрифт без переменной типа logfont
SLAyer
Другие статьи
По всем вопросам и предложениям по сайту пишите на info@comp-info.ru  
|