Свойство объектов Canvas

У ряда объектов из библиотеки визуальных компонент есть свойство Canvas (канва), которое предоставляет простой путь для рисования на них. Эти объекты - TBitmap, TComboBox, TDBComboBox, TDBGrid, TDBListBox, TDirectoryListBox, TDrawGrid, TFileListBox, TForm, TImage, TListBox, TOutline, TPaintBox, TPrinter, TStringGrid. Canvas является в свою очередь объектом, объединяющим в себе поле для рисования, карандаш (Pen), кисть (Brush) и шрифт (Font). Используя Canvas, Вы можете воспроизводить на форме любые графические объекты - картинки, многоугольники, текст и т.п. без использования компонент TImage, TShape и TLabel (т.е. без использования дополнительных ресурсов), однако при этом Вы должны обрабатывать событие OnPaint того объекта, на канве которого Вы рисуете. Событие OnPaint наступает, когда приходит сообщение Windows о необходимости перерисовать испорченное изображение. Изображение может испортится из-за временного перекрытия данного окна другим окном того же или постороннего приложения. Обработчик данного события должен перерисовать изображение. При перерисовке изображения канвы Canvas можно использовать свойство ClipRect, которое указывает область канвы, внутри которой изображение испорчено. Рассмотрим подробнее свойства и методы объекта Canvas.

Свойства Canvas:

Brush - кисть, является объектом со своим набором свойств:

Bitmap - картинка размером строго 8x8, используется для заполнения (заливки) области на экране.

Color - цвет заливки.

Style - предопределенный стиль заливки; это свойство конкурирует со свойством Bitmap - какое свойство Вы определили последним, то и будет определять вид заливки.

Pen - карандаш, определяет вид линий; как и кисть (Brush) является объектом с набором свойств:

Color - цвет линии

Mode - режим вывода: простая линия, с инвертированием, с выполнением исключающего или и др.

Style - стиль вывода: линия, пунктир и др.

Width - ширина линии в точках

ClipRect - (только чтение) прямоугольник, на котором происходит графический вывод.

CopyMode - свойство канвы определяет режим копирования графического изображения на канву методом CopyRect или при рисовании объекта TBitmap. Используя свойство можно достичь различных эффектов объединения изображений и их комбинирования. Возможны следующие значения свойства CopyMode (используемые константы определены в модуле Windows):

cmBlackness - заполняет область канвы, в которую производится копирование, черным цветом. Собственное изображение на канве и копируемое изображение игнорируются.

CmDstInvert - инвертирует изображение на канве. Копируемое изображение игнорируется.

CmMergeCopy - комбинирует изображение канвы и копируемое изображение, используя булеву операцию AND. То же, что cmSrcAnd.

CmMergePaint - комбинирует изображение канвы и инверсию копируемого изображения, используя булеву операцию OR.

CmNotSrcCopy - копирует на канву инверсное изображение. Собственное изображение на канве игнорируется.

CmNotSrcErase - комбинирует изображения канвы и копируемого изображения, используя булеву операцию OR, а затем инвертирует результат.

CmPatCopy - копирует шаблон источника на канву. Собственное изображение на канве игнорируется.

CmPatInvert - комбинирует изображение канвы и шаблон источника, используя булеву операцию XOR.

CmPatPaint - комбинирует инверсное изображение источника и его шаблон, используя булеву операцию OR. Затем этот результат комбинирует с изображением канвы, используя булеву операцию OR.

CmSrcAnd - комбинирует изображения канвы и источника, используя булеву операцию AND. То же, что cmMergeCopy.

CmSrcCopy - копирует изображение источника на канву. Собственное изображение на канве игнорируется. Этот режим принят по умолчанию.

CmSrcErase - инвертирует изображение на канве и комбинирует результат с изображением источника, используя булеву операцию AND.

CmSrcInvert - комбинирует изображения канвы и источника, используя булеву операцию XOR. Повторное копирование восстанавливает прежнее изображение на канве.

CmSrcPaint - комбинирует изображения канвы и источника, используя булеву операцию OR.

CmWhiteness - заполняет область канвы, в которую производится копирование, белым цветом. Собственное изображение на канве и копируемое изображение игнорируются.

Font - шрифт, которым выводится текст (метод TextOut).

Handle - данное свойство дает возможность использовать кисть в прямых вызовах процедур Windows API.

PenPos - текущая позиция карандаша, карандаш рекомендуется перемещать с помощью метода MoveTo, а не прямой установкой данного свойства.

Pixels - двухмерный массив элементов изображения (pixel) определяет цвет пикселя канвы с координатами X и Y в пределах текущей области ClipRect. Если заданы координаты пикселя вне области ClipRect, то при чтении свойства Pixels возвращается значение -1.

Рассмотрим пример (рис.2) в котором показано, как осуществить доступ к отдельной точке на изображении (на канве). По нажатию кнопки “Fill” всем точкам изображения присваивается свой цвет:

procedure TForm1.Button1Click(Sender: TObject);

var i, j: Longint;

Begin

Button1.Enabled:=False;


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: