Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции+Pascal.doc
Скачиваний:
39
Добавлен:
02.12.2018
Размер:
647.17 Кб
Скачать

11.10 Построение прямоугольников

11.10.1 Построение прямоугольника на плоскости

Rectangle(X1,Y1,X2,Y2)

X1,Y1 – координаты левого верхнего угла

X2,Y2 - координаты правого нижнего угла

Пример. Построение последовательности прямоугольников.

USES Graph,Crt;

VAR

Gd,Gm:Integer;

I:Word;

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

End;

For I:=1 To GetMaxY Do Rectangle(1,1,I,I);

ReadLn;

SetWriteMode(XorPut); {режим вывода}

{построенная последовательность стирается}

For I:=GetMaxY DownTo 2 Rectangle(1,1,I,I);

ReadLn;

CloseGraph;

End.

11.10.2 Построение закрашенного прямоугольника

Внутренняя область прямоугольника залита по текущему шаблону

Bar(X1,Y1,X2,Y2);

X1,Y1 – координаты левого верхнего угла

X2,Y2 - координаты правого нижнего угла

3. Отображение параллелепипеда

Bar3D(X1,Y1,X2,Y2,D3,Top);

отображается параллелепипед, «лицевая сторона» которого заливается по текущему шаблону, а глубина задается в пикселах параметром D3. Параметр Top задает режим отображения верхней плоскости.

TopOn - верхняя плоскость отображается

TopOff - верхняя плоскость не отображается

11.11 Установка стиля заполнения

В модуль Graph включен ряд стандартных шаблонов различных узоров для заполнения внутренних и внешних областей различных геометрических фигур. Узор может быть окрашен в допустимые для установленной палитры цвета. Комбинацию узор-цвет принято называть стилем заполнения.

SetFillStyle(Pattern,Color)

Pattern – значение шаблоно различных узоров

Color – цвет

Значение

(Pattern)

Описание узора

0

Сплошной цветом фона

1

Сплошной текущим цветом

2

Типа ---

3

Типа // нормальной толщины

4

Типа // удвоенной толщины

5

Типа \\ удвоенной толщины

6

Типа \\ нормальной толщины

7

Заполнение клеткой

8

Заполнение косой редкой клеткой

9

Заполнение косой частой клеткой

10

Заполнение редкими точками

11

Заполнение частыми точками

12

Определяется пользователем

Пример. Построение прямоугольников, параллелепипеда без верхней плоскости и с верхней плоскостью с различным стилем заполнения.

USES Graph,Crt;

VAR

Gd,Gm:Integer;

X1,X2,Y1,Y2:Word;

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

End;

TextBackGround(1);

{определяются координаты прямоугольника}

X1:=GetMaxX DIV 4;

Y1:=GetMaxY DIV 4;

X2:=2*GetMaxX DIV 3;

Y2:=3*GetMaxY DIV 4;

ClearDevice; {чистка экрана}

{установка стиля заполнения}

SetFillStyle(7,4);

Bar(X1,Y1,X2,Y2); {обычный прямоугольник}

ReadLn;

ClearDevice; {чистка экрана}

{параллелепипед без верхней плоскости}

SetFillStyle(1,2);

Bar3D(X1,Y1,X2,Y2,10,TopOff);

ReadLn;

ClearDevice; {чистка экрана}

{параллелепипед с верхней плоскостью}

SetFillStyle(10,6);

Bar3D(X1,Y1,X2,Y2,10,TopOn);

ReadLn;

CloseGraph;

End.

11.12 Построение многоугольников

Многоугольники можно рисовать самыми различными способами, например с помощью процедур Line или LineTo. В Турбо Паскале имеется процедура DrawPoly, которая позволяет строить любые многоугольники с помощью линий текущего цвета, стиля и толщины.

Формат:

DrawPoly(NumPoints,PolyPoints);

DrawPoly позволяет отображать на экране любую ломаную, заданную совокупность координат некоторого множества точек.

Это может быть как сложная геометрическая фигура, так и график математической функции, заданной в табличном виде.

NumPoints – это количество точек ломаной.

PolyPoints – набор записей, каждая из которых состоит из двух полей, содержащих координаты X и Y очередной точки.

Пример. Построение многоугольников с пятью вершинами. Координаты вершин случайные.

USES Graph,Crt;

VAR

Gd,Gm:Integer;

I:Byte;

Ch:Char;

Points:Array[1..6] Of PointType; {Массив вершин}

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

End;

Randomize;

Repeat

ClearDevice;

{определение случайных координат вершин}

For I:=1 To % Do Begin

Points[I].X:=Random(GetMaxX);

Points[I].Y:=Random(GetMaxY);

End;

{Связь координат первой и последней вершин}

Points[6].X:=Points[1].X;

Points[6].Y:=Points[1].Y;

DrawPoly(6,Points); {построение многоугольника}

Until Ch=#27; {пока не нажата клавиша Esc}

CloseGraph;

End.

Построение дуг, эллипсов и окружностей

Изображение окружности

Circle(X, Y, Radius);

X, Y – координаты центра окружности

Radius – радиус окружности

Изображение дуг

Arc(X, Y, StAngle, EndAngle, Radius);

X, Y – центр окружности дуги.

StAngle, EndAngle – начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки.

Radius – радиус.

Если StAngle=0 и EndAngle=359, то вычерчивается полная окружность.

Построение эллиптических дуг

Ellipse(X, Y, StAngle, EndAngle, XR, YR)

XR, YR – задают горизонтальную и вертикальную оси.

Если StAngle=0 и EndAngle=359, то вычерчивается полный эллипс.