Холст – класс TCanvas

 

Класс TCanvas связывает воедино дескриптор контекста устройства GDI и набор функций GDI. По сути, TCanvas является надстройкой над GDI Windows.

В классе инкапсулированы уже знакомые нам TBrush, TPen и TFont:

propertyBrush: TBrush;

propertyPen: TPen;

propertyFont: TFont;

 

Дескриптор графического устройства находится в свойстве:

propertyHandle: HDC;

 

Холст отличается богатейшим набором методов для рисования, но самый

простейший из них прячется в свойстве:

propertyPixels[X, Y: Integer]: TColor;

 

Благодаря свойству Pixels мы получим доступ к любой точке холста по ее координатам X и Y. При этом можно решить два вопроса: во-первых, узнать, какой цвет установлен для этой точки, и, во-вторых, самим назначить указанной точке требуемый цвет:

ifForm1.Canvas.Pixels[9,9]=clBlack thenForm1.Canvas.Pixels[9,9]:=clRed;

 

Текущая позиция пера:

propertyPenPos : TPoint;

 

Прямоугольник, ограничивающий область, предназначенную для рисования, доступен (только для чтения) в свойстве:

propertyClipRect : TRect;

 

Способ наложения изображения на холст определяется свойством:

propertyCopyMode: TCopyMode defaultcmSrcCopy;

typeTCopyMode = Longint;

 

Класс TCopyMode представляет собой константы кодов растровых операций.

Класс TCanvas может похвастаться двумя незначительно усовершенствованными потомками: TControlCanvas и TMetafileCanvas. Первый из них инкапсулируется в ряде элементов управления, допускающих операции прорисовки на своей поверхности. К таковым элементам относятся потомки TCustomForm, TGraphicControl, TCustomCombo и т. д. В свою очередь TMetafileCanvas специализируется на работе с метафайлами – векторными изображениями.

Вывод текста

 

Для вывода текста в заданных точках чаще всего используется метод:

procedureTextOut(X, Y: Integer; constText: string);

 

Параметрами X и Y задается начальная позиция строки в логических координатах. В эту точку помещается левый верхний угол первого символа выводимой строки. Большими возможностями обладает метод:

procedureTextRect(Rect: TRect; X, Y: Integer; constText: string);

 

Параметр Rect задает границы выводимого текста. Все, что не поместилось

в пределах прямоугольника Rect, останется невидимым.

varRct: TRect;

Begin

Rct.Left:=10; Rct.Top:=10; Rct.Right:=58; Rct.Bottom:=25;

Form1.Canvas.TextRect(Rct,10,10,'Функция TextRect');

end;

 

Совместно с TextRect() часто используют функции, возвращающие высоту и ширину строки в пикселах для текущего шрифта.

functionTextHeight(constText: string): Integer;

functionTextWidth(constText: string): Integer;

 

Функция TextExtent() вполне может заменить оба предыдущих метода:

functionTextExtent(constText: string): TSize;

typeTSize = record

cx: Longint;

cy: Longint;

end;

 

С особенностями вывода текста на графическое устройство тесно связано свойство холста:

propertyTextFlags: LongInt;

В свойстве инкапсулированы параметры функции Win32 API ExtTextOut(). Возможные значения флагов приведены в табл. 10.2.

 

Таблица 10.2. Основные флаги для свойства TextFlags

Константа Описание
ETO_CLIPPED Флаг автоматически устанавливается при вызове метода TextRect().Строка выводится в границах заданного прямоугольника Rect.
ETO_OPAQUE Строка выводится с непрозрачным фоном.
ETO_RTLREADING Флаг предназначен для работы с ближневосточной письменностью (справа налево).
ETO_GLYPH_INDEX Текст выводится непосредственно средствами GDI без анализа языковой принадлежности; обычно используется совместно со шрифтами TrueType.

Значительно больше возможностей по выводу текста предоставляет функция Windows API:

functionDrawText( HDC : hDC, // дескриптор контекста

Text : pChar, // содержимое текста

Count: Integer, // количество символов

Rect : pRect, // прямоугольная область для вывода текста

dtFormat : Cardinal // опции форматирования текста

): Integer;

 

По сравнению с простейшим методом TextOut() наша новая знакомая не допустит выхода текста за пределы границы прямоугольной области Rect. Параметр Count требует указать количество выводимых символов, но если вы передадите значение –1, то функция самостоятельно найдет нулевой символ, завершающий строку, и выведет ее всю. Параметр dtFormat определяет опции форматирования текста; некоторые его значения приведены в табл. 10.3.

Таблица 10.3. Опции форматирования текста метода DrawText()

Константа Описание
DT_BOTTOM Выравнивание текста по нижней границе прямоугольника Rect.
DT_TOP Выравнивание по верхней границе.
DT_RIGHT Выравнивание вправо.
DT_LEFT Выравнивание влево.
DT_VCENTER Центрирование по вертикале.
GT_CENTER Центрирование по горизонтале.

 

В случае успеха функция DrawText() возвращает высоту текста в пикселах, а при неудаче – ноль.

 

varRect : TRect;

S : string;

Begin

Rect.Left:=10; Rect.Top:=10;

Rect.Bottom:=Rect.Left+20;

Rect.Right:=100;

s:='ABCDEF'+#0;

DrawText(Form1.Canvas.Handle, pChar(s), -1, Rect, DT_CENTER);

end;








Дата добавления: 2016-03-15; просмотров: 558;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.009 сек.