Свойства 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;
with Canvas do
for i:=1 to Width do
begin {принудительно заставляем приложение обрабатывать сообщения}
Application.ProcessMessages;
for j:=1 to Height do Pixels[i,j]:=i*j;
end;
Button1.Enabled:=True;
end;
Рис.2. Демонстрация доступа к отдельной точке изображения
Методы Canvas:
Методы для рисования простейшей графики - Arc, Chord, LineTo, Pie, Polygon, PolyLine, Rectangle, RoundRect. При прорисовке линий в этих методах используются карандаш (Pen) канвы, а для заполнения внутренних областей - кисть (Brush).
Методы для вывода картинок на канву - Draw и StretchDraw, В качестве параметров указываются прямоугольник и графический объект для вывода (это может быть TBitmap, TIcon или TMetafile). StretchDraw отличается тем, что растягивает или сжимает картинку так, чтобы она заполнила весь указанный прямоугольник (см. пример к данному уроку).
Методы для вывода текста - TextOut и TextRect. При выводе текста используется шрифт (Font) канвы. При использовании TextRect текст выводится только внутри указанного прямоугольника. Длину и высоту текста можно узнать с помощью функций TextWidth и TextHeight.
Рассмотрим пример использования методов, выводящих изображение - Draw и StretchDraw:
Прорисовка изображений происходит в обработчике события OnPaint для формы:
procedure TForm1.FormPaint(Sender: TObject);
begin
with Canvas do begin
Draw(0,0, Image1.Picture.BitMap);
StretchDraw(Rect(250,0,350,50),Image1.Picture.BitMap)
end;
