Графические инструменты в Delphi. Методы класса TCanvas

   
На этом шаге мы рассмотрим состав класса TCanvas, в частности,
остановимся на его методах.

   
Канва содержит методы-надстройки над всеми основными функциями
рисования GDI Windows, которые
приведены ниже в таблице. При их рассмотрении имейте в виду, что все
геометрические фигуры
рисуются текущим пером. Те из них, которые можно закрашивать,
закрашиваются с помощью текущей кисти.
Кисть и перо при этом имеют текущий цвет.

   

Таблица 1. Методы класса
TCanvas

Метод Описание
procedure Arc (X1, Y1, X2, Y2, ХЗ, Y3, Х4, Y4: Integer); Чертит дугу эллипса в охватывающем прямоугольнике
(X1,Y1)-(X2,Y2). Начало
дуги лежит на пересечении эллипса и луча, проведенного из его центра в точку
(ХЗ, Y3),
а конец - на пересечении с лучом из центра в точку (Х4, Y4). Дуга
чертится против часовой стрелки.
procedure BrushCopy (const Dest: TRect; Bitmap: TBitmap;
const Source: TRect; Color: TColor);
Копирует часть изображения Source на участок канвы
Dest. Color указывает
цвет в Dest, который должен заменяться на цвет кисти канвы. Метод
введен для совместимости
с ранними версиями Delphi. Вместо него следует пользоваться классом
ТImageList.
procedure Chord (X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer); Чертит сегмент эллипса в охватывающем прямоугольнике
(X1,Y1)-(X2,Y2). Начало
дуги сегмента лежит на пересечении эллипса и луча, проведенного из его центра
в точку
(X3, Y3), а конец - на пересечении с лучом из центра в точку (X4,
Y4). Дуга сегмента
чертится против часовой стрелки, а начальная и конечная точки дуги
соединяются прямой.
procedure CopyRect (Dest: TRect; Canvas: TCanvas; Source: TRect)
;
Копирует изображение Source канвы Canvas в участок
Dest текущей
канвы. При этом разнообразные специальные эффекты достигаются с помощью
свойства CopyMode.
procedure Draw (X, Y:Integer; Graphic: TGraphic); Осуществляет прорисовку графического объекта Graphic так,
чтобы левый верхний
угол объекта расположился в точке (X, Y).
procedure DrawFocusRect (const Rect:TRect); Прорисовывает прямоугольник с помощью операции XOR,
поэтому повторная прорисовка
уничтожает ранее вычерченный прямоугольник. Используется в основном для
прорисовки нестандартных
интерфейсных элементов при получении ими фокуса ввода и при потере его.
procedure Ellipse (X1, Y1, X2, Y2: Integer); Чертит эллипс в охватывающем прямоугольнике (X1,Y1)-(X2,Y2).
Заполняет внутреннее
пространство эллипса текущей кистью.
procedure FillRect (const Rect: TRect); Заполняет текущей кистью прямоугольную область Rect,
включая ее левую и верхнюю границы,
но не затрагивая правую и нижнюю границы.
procedure FloodFill (X, Y: Integer; Color: TColor; FillStyle: TFillStyle); Производит заливку канвы текущей кистью. Заливка начинается с точки
(X, Y) и распространяется
вовсе стороны от нее. Если FillStyle=fsSurface, заливка распространяется
на все
соседние точки с цветом Color. Если FillStyle=fsBorder, наоборот, заливка
прекращается
на точках с этим цветом.
procedure FrameRect (const Rect: TRect); Очерчивает границы прямоугольника Rect текущей кистью
толщиной в 1 пиксель без
заполнения внутренней части прямоугольника.
procedure LineTo (X,Y: Integer); Чертит линию от текущего положения пера до точки (X,Y).
procedure Lock; Блокирует канву в многопоточных приложениях для предотвращения
использования канвы в других потоках команд.
procedure MoveTo (X,Y: Integer); Перемещает перо в положение (X, Y) без вычерчивания линий.
procedure Pie (X1, Y1, X2, Y2, X3, Y3, X4, Y4: LongInt); Рисует сектор эллипса в охватывающем прямоугольнике (X1, Y1) -
(X2, Y2). Начало дуги
лежит на пересечении эллипса и луча, проведенного из его центра в точку
(X3, Y3), а
конец - на пересечении с лучом из центра в точку (X4, Y4). Дуга чертится
против часовой
стрелки. Начало и конец дуги соединяются прямыми с ее центром.
procedure Polygon (Points: array of TPoint); Вычерчивает пером многоугольник по точкам, заданным в массиве
Points. Конечная точка
соединяется с начальной и многоугольник заполняется кистью. Для получения
незаполненного многоугольника
используйте метод Polyline.
procedure Polyline (Points: array of TPoint); Вычерчивает пером ломаную линию по точкам, заданным в массиве
Points.
procedure Rectangle (X1, Y1, X2, Y2:Integer); Вычерчивает и заполняет прямоугольник (X1, Y1) -(X2, Y2). Для
вычерчивания без
заполнения используйте методы FrameRect или Polyline.
procedure Refresh; Устанавливает в канве умалчиваемые шрифт и кисть.
procedure RoundRect (X1, Y1, X2,Y2, X3, Y3: Integer) ; Вычерчивает и заполняет прямоугольник (X1,Y1) - (X2, Y2) со
скругленными углами.
Прямоугольник (X1, Y1) - (X3, Y3) определяет дугу эллипса для
округления углов.
procedure StretchDraw (const Rect: TRect; Graphic:
TGraphic);
Вычерчивает и при необходимости масштабирует графический объект
Graphic так, чтобы
он полностью занял прямоугольник Rect.
function TextExtent (const Text: String): TSize; Возвращает ширину и высоту прямоугольника, охватывающего
текстовую строку Text.
function TextHeight (const Text: String): Integer; Возвращает высоту прямоугольника, охватывающего текстовую строку
Text.
procedure TextOut (X,Y: Integer; const Text: String); Выводит текстовую строку Text так, чтобы левый верхний угол
прямоугольника,
охватывающего текст, располагался в точке (X, Y).
procedure TextRect (Rect: TRect; X, Y: Integer; const Text:
String);
Выводит текстовую строку Text так, чтобы левый верхний угол
прямоугольника, охватывающего
текст, располагался в точке (X, Y). Если при этом какая-либо часть
надписи выходит из
границ прямоугольника Rect, она отсекается и не будет видна.
function TextWidth (const Text: String): Integer; Возвращает ширину прямоугольника, охватывающего текстовую строку
Text.
function TryLock: Boolean; Пытается заблокировать канву. Если она не заблокирована другим
потоком команд,
то значение функции равно True, в противном случае ничего не делает и
возвращает False.
procedure Unlock; Уменьшает на 1 счетчик блокировок канвы.

   
Метод

    procedure Refresh;

сбрасывает текущие шрифт, перо и кисть, заменяя их на стандартные,
заимствованные из
Windows (BLACK_PEN, HOLLOW_BRUSH, SYSTEM_FONT).
Предусмотрено два события для
пользовательской реакции на изменение канвы:

    property OnChange: TNotifyEvent;
    property OnChanging: TNotifyEvent;       .

   
Эти события возникают при изменениях свойств и вызовах методов
TCanvas, меняющих
вид канвы (то есть при любом рисовании; в MoveTo, например, они не
возникают).
Отличие их в том, что OnChanging вызывается до начала
изменений, а
OnChange - после их завершения.

   
Идентификатор (код) растровой операции при копировании прямоугольных
блоков содержится в
свойстве:

    property CopyMode: TCopyMode;
    TCopyMode = LongInt;       .

   
Он определяет правило сочетания пикселей, копируемых на канву, с ее текущим
содержимым.
При этом можно создавать разные изобразительные эффекты. Их значения
перечислены в
таблице 2. Значением
CopyMode по умолчанию является
cmSrcCopy - копирование пикселей источника поверх существующих.

   
Помимо графических примитивов, таких как линии и фигуры, на канве можно
разместить готовые
изображения. Для их описания создан класс TGraphic.

   
На следующем шаге мы рассмотрим состав класса TGraphic.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий