Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по Паскалю 3.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
313 Кб
Скачать
☆

1.4. Изображение многоугольников

Процедура Rectangle

Вычерчивает прямоугольник с указанными координатами углов.

Заголовок:

Procedure Rectangle (X1, Y1, X2, Y2: integer);

Здесь, X1 и Y1 – координаты левого верхнего угла прямоугольника; X2 и Y2 – координаты нижнего правого угла прямоугольника.

Прямоугольник вычерчивается с использованием текущего цвета и текущего стиля линий

Процедура DrawPoly

Вычерчивает произвольную ломаную линию, заданную координатами точек излома.

Заголовок:

Procedure DrawPoly (N: Word, Var Points);

Здесь, N – количество точек излома, включая обе крайние точки; Points – переменная типа PointType, содержащая координаты точек излома.

Координаты точек излома задаются парой значений типа Word: первое значение определяет горизонтальную координату, второе значение – вертикальную.

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

Пример:

Изобразить в центре экрана пятиконечную звезду. Координаты точек излома и направление построения звезды имеют вид:

(300, 70)

(150,150) (450,150)

(200,300) (400,300)

Program DemoDrawPoly:

Uses CRT, Graph;

Tupe Cs =array [1..6, 1..2] of integer;

const ass:Cs = ((300, 70),

(200, 300),

(450, 150),

(150, 150),

400,300,

(300, 70));

Var

GrDriver, GrMode, x: integer;

Begin

GrDriver: =Detect;

InitGraph (GrDriver, GrMode, 'C: |Bp| BGI');

For x:=1 to 4 do

drawPoly (6, ass);

readln;

CloseGraph;

End.

Для задания точек излома можно использовать следующий определенный в модуле тип:

type PointType: record

x, y: word

end;

Пример:

Построить на экране правую ветвь параболы, направленную вверх.

Program DemoDrawPoly:

Uses CRT, Graph;

Var

GrDriver, GrMode, x: integer;

ass: array [1..100] of PointTupe;

Begin

GrDriver: =Detect;

InitGraph (GrDriver, GrMode, 'C: |Bp| BGI');

For x:=1 to 100 do

begin

ass [x]. x:= 10*x;

ass [x]. y:= 450-2*x*x;

end;

DrawPoly (100, ass);

readln;

CloseGraph;

End.

Необходимо отметить, что на количество точек излома накладываются ограничения, связанные с размером используемой буферной памяти. Обычно для небольших программ количество точек излома лежит в пределах 600-670 точек.

1.5. Изображение дуг, окружностей, эллипсов

Процедура Circle

Вычерчивает окружность.

Заголовок:

Procedure Circle (X, Y: integer, R: word);

Здесь, X и Y – координаты центра, R – радиус в пикселах.

Окружность выводится текущим цветом. Толщина линии, устанавливается текущим стилем, вид линии всегда SolidLn (сплошная). Процедура вычерчивает правильную окружность с учетом изменения линейного размера радиуса в зависимости от его направления относительно сторон графического экрана. В связи с этим параметр R определяет количество пиксел в горизонтальном направлении.

Процедура Arc

Чертит дугу окружности.

Заголовок:

Procedure Arc (X, Y: integer; Beg A, End A, R: word);

Здесь, X и Y – координаты центра; Beg A и End A – соответственно начальный и конечный углы дуги; R – радиус.

Углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо. Если задать значения начального угла 0˚ и конечного – 359˚, то будет выведена полная окружность при вычерчивании дуги окружности используются те же соглашения относительно линий и радиуса, что и в процедуре Circle.

0˚-90˚ 270˚-450˚

Процедура Ellipse

Вычерчивает эллипсную дугу.

Заголовок:

Procedure Ellipse (X, Y: integer: Beg A, End A, RX, RY: word);

Здесь, X и Y – координаты центра; Beg A, End A, – соответственно начальный и конечный углы дуги; RX, RY – горизонтальный и вертикальный радиусы эллипса в пикселах.

При вычерчивании дуги эллипса используются те же соглашения относительно линий, что и в процедуре Circle, и те же соглашения относительно углов, что и процедуре Arc.