Основы программирования на языке Паскаль
Процедура Ва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;
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности