На этом шаге мы рассмотрим состав класса TCanvas, в частности,
остановимся на его свойствах.
Этот класс создает "канву", на которой можно рисовать чертежными инструментами - пером, кистью и шрифтом. Объекты класса TСаnvas автоматически создаются для всех видимых компонентов, которые должны уметь нарисовать себя. Они инкапсулируют объекты Font, Pen, Brush, а также многочисленные методы, использующие эти объекты. Другими словами, он объединяет в себе и "холст" (контекст конкретного устройства GDI), и "рабочие инструменты" (перо, кисть, шрифт) и даже "подмастерьев" (набор функций по рисованию типовых геометрических фигур).
В дальнейшем для обозначения этого класса мы будем пользоваться термином "канва".
Канва не является компонентом, но она входит в качестве свойства во многие другие компоненты, которые должны уметь нарисовать себя и отобразить какую-либо информацию.
Остановимся более подробно на свойствах этого класса.
Дескриптор контекста устройства, над которым построена "канва", может быть востребован для различных низкоуровневых операций. Он задается свойством:
property Handle: HDC; .
Для рисования канва включает в себя шрифт, перо и кисть:
property Font: TFont;
property Pen: TPen;
property Brush: TBrush; .
Кроме того, можно рисовать и поточечно, получив доступ к каждому пикселю. Значение свойства
property Pixels [x, y: Integer]:TColor;
соответствует цвету точки с координатами (X,Y). Другие свойства этого класса перечислены в таблице 1.
| Свойство | Описание |
|---|---|
| property Brush: TBrush; | Объект-кисть. |
| property ClipRect: TRect; | Определяет текущие размеры области, нуждающейся в прорисовке. |
| property CopyMode: TCopyMode; | Устанавливает способ взаимодействия растрового изображения с цветом фона. |
| property Font: TFont; | Объект-шрифт. |
| property Handle: Integer; | Дескриптор канвы. Используется при непосредственном обращении к API-функциям Windows. |
| property LockCount: Integer; | Счетчик блокировок канвы. Увеличивается на единицу при каждом обращении к методу Lock и уменьшается на единицу при обращении к Unlock. |
| property Pen: TPen; | Объект-перо. |
| property PenPos:TPoint; | Определяет текущее положение пера в пикселях относительно левого верхнего угла канвы. |
| property Pixels[X, Y:Integer]: TColor; | Массив пикселей канвы. |
Свойство CopyMode используется при копировании части одной канвы (источника) в другую (приемник) методом CopyRect и может иметь одно из следующих значений:
| Значение | Описание |
|---|---|
| cmBlackness | Заполняет область рисования черным цветом. |
| cmDestInvert | Заполняет область рисования инверсным цветом фона. |
| cmMergeCopy | Объединяет изображение на канве и копируемое изображение операцией AND. |
| cmMergePaint | Объединяет изображение на канве и копируемое изображение операцией OR. |
| cmNotSrcCopy | Копирует на канву инверсное изображение источника. |
| cmNotSrcErase | Объединяет изображение на канве и копируемое изображение операцией OR и инвертирует полученное. |
| cmPatCopy | Копирует образец источника. |
| cmPatInvert | Комбинирует образец источника с изображением на канве с помощью операции XOR. |
| cmPatPaint | Комбинирует изображение источника с его образцом с помощью операции OR, затем полученное объединяется с изображением на канве также с помощью OR. |
| cmSrcAnd | Объединяет изображение источника и канвы с помощью операции AND. |
| cmSrcCopy | Копирует изображение источника на канву. |
| cmSrcErase | Инвертирует изображение на канве и объединяет результат с изображением источника операцией AND. |
| cmSrcInvert | Объединяет изображение на канве и источник операцией XOR. |
| cmSrcPaint | Объединяет изображение на канве и источник операцией OR. |
| cmWhitness | Заполняет область рисования белым цветом. |
С помощью свойства Pixels все пиксели канвы представляются в виде двухмерного массива точек. Изменяя цвет пикселей, можно прорисовывать изображение по отдельным точкам.
На следующем шаге мы рассмотрим методы класса TCanvas.