Шаг 39.
Графические инструменты в Delphi. Свойства класса TCanvas

    На этом шаге мы рассмотрим состав класса 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.

   
Таблица 1. Свойства класса TCanvas
Свойство Описание
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 и может иметь одно из следующих значений:

   
Таблица 2. Значения свойства CopyMode
Значение Описание
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.




Предыдущий шаг Содержание Следующий шаг