Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа по информатике.doc
Скачиваний:
6
Добавлен:
13.09.2019
Размер:
4.03 Mб
Скачать

2.11. Оператор with

Синтаксис

WITH <Структурная переменная> DO <Оператор>

Оператор WITH применяется для упрощения доступа к свойствам структурных переменных (типа «запись», «объект» или «класс»). Действие оператора можно продемонстрировать, переписав соответствующим образом тело процедуры, приведенной в предыдущем примере.

Пример

WITH Image1.Picture.Bitmap DO

BEGIN

Width:=Image1.Width;

Height:=Image1.Height;

END;

2.12. Класс tCanvas

Класс TCanvas предоставляет средства для рисования на различных типах изображений, например на растровых изображениях, представляемых классом TBitmap. Основные используемые для рисования процедуры класса TCanvas приведены в следующей таблице.

Процедура

Описание

Rectangle(x1,y1,x2,y2)

Рисование прямоугольника, левый верхний угол которого задается точкой (x1,y1), а правый нижний точкой (x2,y2). При этом внутренняя часть прямоугольника заполняется текущим цветом фона. На растровом изображении рисование прямоугольника происходит следующим образом:

При этом в прямоугольник не включаются самая правая и самая нижняя границы.

MoveTo(x,y)

Перемещение текущей позиции в точку (x,y)

LineTo(x,y)

Рисование линии из текущей позиции до точки (x,y). При этом текущая позиция перемещается в точку (x,y)

Ellipse(x1,y1,x2,y2)

Рисование эллипса, вписанного в прямоугольник, задаваемый точками (x1,y1), и (x2,y2)

Продемонстрируем использование процедур класса TCanvas на примере изображения треугольника с известными сторонами. Расположим треугольник, как показано на следующем рисунке:

,

Перепишем процедуру обработки события от нажатия кнопки Button1 из рассмотренного ранее примера.

Пример

PROCEDURE TForm1.Button1Click(Sender: TObject);

VAR

a,b,c,p,s,h:Real;

BEGIN

WITH Image1.Picture.Bitmap DO

BEGIN

Width:=Image1.Width;

Height:=Image1.Height;

END;

a:=150;b:=100;c:=120;

p:=(a+b+c)/2;

s:=Sqrt(p*(p-a)*(p-b)*(p-c));

WITH Image1.Picture.Bitmap.Canvas DO

BEGIN

MoveTo(0,0);

LineTo(Round(a),0);

h:=2*s/a;

LineTo(Round(Sqrt(Sqr(c)-Sqr(h))),Round(h));

LineTo(0,0);

END;

END;

Результат работы программы представлен на следующем рисунке.

2.13. Изменение параметров изображения

При рисовании линий и фигур, рассмотренных выше, используются компоненты класса TCanvas: перо (Pen) и кисть (Brush).

Различие между пером (Pen) и кистью (Brush) заключается в следующем: перо (Pen) используется при рисовании линий или рамок, а кисть (Brush) для заполнения фигуры.

Для изменения цвета линии, необходимо изменить соответствующее свойство пера, например:

Image.Picture.Bitmap.Canvas.Pen.Color:=clRed {красный цвет пера}

Использование после этого любых процедур рисования позволит получить линии контуров красного цвета. Возможные варианты значений указанного свойства: clGreen, clBlue и т.д.

Кроме того, имеется возможность изменить толщину и тип линии:

Image.Picture.Bitmap.Canvas.Pen.Width:=2 {линия толщиной 2}

По умолчанию толщина линии равна 1.

Image.Picture.Bitmap.Canvas.Pen.Style:=psDash

{ штриховая линия }

Возможные варианты значений указанного свойства: psDot – штриховая линии их коротких штрихов, psDashDot – штрихпунктирная линия. По умолчанию свойство имеет значение psSolid – сплошная линия.

Для заполнения внутренней области фигур (прямоугольника, эллипса и т.п.) используется кисть (Brush). Цвет кисти задается следующим образом:

Image.Picture.Bitmap.Canvas.Brush.Color:=clGreen

{ зеленый цвет кисти }

Кроме того, имеется возможность задать вид заполнения внутренней области:

Image.Picture.Bitmap.Canvas.Brush.Style:= bsFDiagonal

{ диагональная штриховка }

Возможные варианты значений указанного свойства:

Значение

Образец

Значение

Образец

bsSolid

bsCross

bsClear

bsDiagCross

bsBDiagonal

bsHorizontal

bsFDiagonal

bsVertical