Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DLab9_Статическая графика.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
96 Кб
Скачать
☆

Свойства 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;