Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
\\\\ ;
Процедура 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 { графический режим открыт, можно работать }
for radius:=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;
InitGraph(grDriver,grMode, );
errCode:=Graphresult;
if errCode=grOK then
Begin SetBkColor(blue);
SetFillStyle(1,4);
FillEllipse(220,150,50,50);
FillEllipse(420,150,50,50);
FillEllipse(320,230,50,130);
FillEllipse(370,405,50,30);
FillEllipse(275,410,50,30);
readln; end
else Halt(1); end.
Prim56 рисует обезьяну с тазиком.
Program Prim57;
Uses Graph;
Var i,grDriver,grMode,TrrC