Основы программирования на языке Паскаль

Процедура Ваr3D (Х1, Y1, Х2, Y2, Depth, Тор); вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Depth – глубина третьего измерения, Top=true – верхняя грань вычерчивается, false - нет.

Процедура FillPoly (n, Coords); обводит линией и закрашивает замкнутый многоугольник; n

количество вершин, Coords – переменная типа PointType, содержащая координаты вершин (см. DrawPoly).

Процедура FillEllipse (Х, Y, Rx, Ry); обводит линией и заполняет эллипс.

Процедура Sector (Х, Y, Beg А, End А, Rx, Ry); вычерчивает и заполняет эллипсный сектор.

Процедура PieSlice (Х, Y, Beg А, End А, R); вычерчивает и заполняет сектор окружности.

Процедура SetColor (Color); устанавливает текущий цвет для выводимых линий и символов.

Процедура SetbkColor (Color); устанавливает цвет фона окна.

Процедура SetFillStyle (Fill, Color); устанавливает стиль Fill и цвет заполнения Color.

Значения Fill:

0 – заполнение фоном (узор отсутствует);

1 – сплошное заполнение;

2 – заполнение – – – – –;

3 – – « – /////// ;

4 – – « – утолщенными ///////;

5 – – « – утолщенными \\\\\\ ;

6 – – « – \\\\\\ ;

7 – – « – + + + + + +;

8 – – « – ******;

9 – – « – прямоугольной клеточкой;

10 – – « – редкими точками ;

11 – – « – частыми точками ;

12 – – « – узор определяется пользователем.

Процедура FloodPill (Х, Y, Color); заполняет произвольную замкнутую линию (точки соединения должны совпадать, например, концы линий не могут пересекаться) текущим стилем и текущим цветом. X, Y – координаты точки внутри фигуры, Color — цвет ограничений линии. Если линии разомкнуты или пересекаются и концы «торчат», то цвет «разольется» по всему окну.

Функция ImageSize (X1, Y1, X2, Y2); возвращает размер памяти в байтах, необходимый для размещения прямоугольного фрагмента изображения (например, окна с рисунком).

Процедура GetImage (X1, Y1, X2, Y2, Buf); помещает в память копию прямоугольного фрагмента изображения. Buf — переменная или участки кучи, куда будет помещена копия видеопамяти с фрагментом изображения. Размер Buf должен быть не меньше значения, возвращаемого функцией ImageSize с теми же координатами X1 .Y2.

Процедура PutImage (X, Y, Buf, Mode); выводит в заданное место экрана копию фрагмента изображения, ранее помещенную в память процедурой GetImage.

X, Y — координаты левого угла того места на экране, куда будет скопирован фрагмент изображения. Buf — переменная, или участок кучи, откуда берется фрагмент изображения. Mode — способ копирования.

12.3. Примеры программ

Ниже приведены программы, демонстрирующие некоторые возможности графики в Паскале.

Программа Prim 54 демонстрирует вывод различных простых объектов-окружностей, дуг, эллипсов, прямоугольников, параллелепипедов.

Program Prim54;Uses Graph;var grDriver,grMode,errCode,Radius,i,Width,y0,y1,y2,x1,x2:integer;Begin grDriver:=detect; { определениеномерадрайвера }

InitGraph(grDriver,grMode,'');

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

errCode:=GraphResult;

if errCode=grOK then

begin { графический режим открыт, можно работать }

forradius:=1 to 5 do

begin { рисуем окружности с радиусами 10,20 50,

с центром x=200, y=70 точек растра }

Circle(200,70,Radius*10); readln; end;

{ Cleardevice;} { если бы этот оператор не был в

комментарных скобках, т.е. не заблокирован, то

сейчас окружности были бы стерты с экрана }

Ellipse(200,200,0,360,30,50); { рисуем дугу эллипса с центром 200,200, начальный угол=0, конечный – 360 (замкнутый,

эллипс радиусами 30,50 }

readln;

Ellipse(300,200,0,180,50,30); {полэллипса }

readln;

for Radius:=1 to 5 do

Arc(300,100,0,90,radius*10); {дугисцентром 300,100, от

0 до 90 градусов, радиусами 10,20 50}

readln;

Width:=10;

Bar(30,20,50,100); {прямоугольник с координатами 30,20 –

верхний левый угол и 50,100 – нижний правый угол}

for i:=1 to 5 do

Bar(10+i*Width,300+i*10,20+i*Width,400);

{пять прямоугольников: первый 20,310.30,400,

второй 30,320,40,400 и т.д. }

readln;

Bar3D(210,300,250,360,10,TopOn); {параллелепипед с крышкой}

readln;

x1:=410; y1:=300; x2:=450; y2:=360;

Bar3D(x1,y1,x2,y2,10,TopOff); { параллелепипедбезкрышки }

readln;

CloseGraph; {закрыть Graph}

end

else Halt(1); { режим Graph неудалосьоткрыть. }

End.

Prim 55 рисует в динамике случайно расположенные цветные линии в окне до тех пор, пока не будет нажата клавиша Enter. Затем машина выводит последним случайным цветом главную диагональ окна, после Enter – случайные лучи и после Enter – прямоугольник.

Program Prim55;

Uses CRT,Graph;

var GrDriver,grMode,errCode:integer;

begin grDriver:=Detect;

InitGraph(grDriver,grMode,' ');

errCode:=GraphResult;

if errCode=grOK then

begin Randomize; {запустить генератор случайных чисел}

repeat {рисуются цветные линии в квадрате 500 x 500,

пока не будет нажата любая клавиша, координаты

линий случайны, цвета линий случайны}

SetColor(Random(GetMaxColor)+1);

Line(Random(500),Random(500),Random(500),Random(500));

Delay(1000); {каждая линия рисуется с задержкой}

until KeyPressed;

Cleardevice;

MoveTo(1,2); {перевестикурсор}

LineRel(500,500); {провести линию из предыдущей точки в 500,500

последним цветом}

readln; readln;

repeat

LineTo(random(500),random(500)); {провести линию в случайную точку}

Delay(6000);

until KeyPressed; readln;

ClearDevice;

Rectangle(29,29,GetMaxX-29,GetMaxY-29); {прямоугольник}

readln;

CloseGraph; end

else Halt(1); end.

Prim56 рисует эллипсы и круги, закрашенные красным цветом.

Program Prim56;

Uses CRT, Graph;

Var grDriver,grMode,errCode:integer;

Begin grDriver:=Detect;

Страница:  1  2  3  4  5  6  7  8  9  10  11  12  13  14  15 
 16  17  18  19  20  21  22  23  24  25  26  27  28  29  30 
 31 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы