Все богатство изобразительных возможностей Windows вовсе не исчерпывается набором свойств и методов класса TCanvas: этот класс инкапсулирует лишь наиболее популярные приемы работы с чертежными инструментами. В табл. 1 перечислены некоторые функции Windows, которые не инкапсулирует класс TCanvas и способны значительно разнообразить текстовый вывод (именно он наиболее обеднен узкими рамками TCanvas).
Таблица 1. Некоторые текстовые функции Windows API
| type
TLogFont = record lfHeight: Integer; lfWidth: Integer; lfEscapment: Integer; lfOrientation: Integer; lfWeight: Integer; lfItalic: Byte; lfUnderline: Byte; lfStrikeOut: Byte; lfCharSet: Byte; lfOutPrecision: Byte; lfClipPrecision: Byte; lfQuality: Byte; lfPitchAndFamily: Byte; lfFaceName: PChar; end; function CreateFont(Font: TLogFont): hFont; | Создает новый шрифт на основе данных в параметре Font (назначение полей структуры TLogFont см. в тексте после таблицы) | ||
| function
DrawText(DC: hDC; pText: PChar; var Rect: TRect; Format: Wodr): Integer; | В прямоугольнике Rect выводит многострочный текст, на который указывает pText. Параметр Format используется для форматирования (см. ниже) | ||
| function
ExtTextOut(DC: hDC; X, Y: Integer; Options: Integer; Rect: TRect; pText: PChar; Count: Integer; PX: PInteger): Bool; | Выводит текст с нестандартными межсимвольными расстояниями: X, Y — верхняя левая точка текста; Options — параметр, управляющий выводом (см. ниже); Rect — ограничивающий прямоугольник; pText — указатель на строку вывода; Count — количество выводимых символов; PX — указатель на массив целочисленных значений, определяющих межсимвольные расстояния: 1-й параметр — расстояние от 1-го до 2-го символа; 2-й параметр — расстояние от 2-го до 3-го символа и т.д.; если какой-то параметр равен 0, используется умалчиваемое межсимвольное расстояние | ||
| function
GetBkColor(DC: hDC): TColor; | Возвращает цвет фона | ||
| function
GetBkMode(DC: hDC): Integer; | Возвращает режим прорисовки фона: Opaque — фон прорисовывается заново при выводе текста; Transparent — фон не прорисовывается. | ||
| function
GetTextAlign(DC: hDC): Integer; | Возвращает выравнивание текста | ||
| function
GetTextCharacterExtra(DC: hDC): Integer; | Возвращает межсимвольное расстояние | ||
| function
SetBkColor(DC: hDC; Color: TColor): TColor; | Устанавливает новый цвет фона и возвращает старый, если обращение успешно | ||
| function
SetBkMode(DC: hDC; Mode: Integer): Integer; | Устанавливает новый режим прорисовки фона и возвращает старый, если операция успешна | ||
| function
SetTextAlign(DC: hDC; Flags: Integer): Integer; | Устанавливает новое выравнивание текста и возвращает старое, если вызов успешен | ||
| function
SetTextCharacterExtra(DC: hDC; CharExtra: Integer): Integer; | Устанавливает новое межсимвольное расстояние и возвращает старое, если вызов успешен |
