Электронный справочник по процедурам и функциям модуля Graph языка программирования Turbo Pascal автор: Алиева Ирина Викторовна Учитель информатики и ИКТ МОУ «Лицей г. Отрадное» © 2011 Алиева Ирина
Модуль Graph Предназначен для формирования графических изображений.
Экран в графическом режиме представляет собой прямоугольник, заполненный точками – пикселями. Y X y x (0,0) Для построения изображения используется система координат. Отсчет начинается от верхнего левого угла, который имеет координаты – (0,0). Значение x увеличивается слева направо. Значение y увеличивается сверху вниз. Графический режим
Текущий указатель в графическом режиме играет ту же роль, что и курсор в текстовом режиме, однако, в отличие от курсора, он невидим. Текущий указатель
Подключение модуля Graph uses Graph; var gd,gm:integer; begin gd:=Detect; {автоматическое определение типа графического драйвера и режима работы адаптера} InitGraph(gd, gm, путь к файлу драйвера); Операторы; CloseGraph; end.
Процедуры и функции модуля Graph Точка PutpixelPutpixel Линия LineLine LineRel(dx,dy) LineTo(x,y) Указатель MoveToMoveTo Прямоугольник Rectangle(x1,y1,x2,y2)Rectangle(x1,y1,x2,y2) Bar(x1,y1,x2,y2) Bar(x1,y1,x2,y2,h,top) Окружность Circle(x,y,radius)Circle(x,y,radius) Эллипс Ellipse(x,y,StAnge,EndAngle,Xradius,Yradius)Ellipse(x,y,StAnge,EndAngle,Xradius,Yradius) FillEllipse(x,Y,Xradius,Yradius) Дуга окружности Arc(X,Y,StAngle,EndAngle,radius)Arc(X,Y,StAngle,EndAngle,radius) Сектор PieSlice(x,y,StAngle,EndAngl,radius)PieSlice(x,y,StAngle,EndAngl,radius) Многоугольник DrawPoly(N,ArrayOfPoint)DrawPoly(N,ArrayOfPoint) FillPoly(N,ArrayOfPoint) Установка цветов и стилей
(x,y) X Y y x Выводит на экран точку с координатами (x,y) и цветом color. PutPixel(x,y,color); (0,0) Uses graph; var gd,gm,x,y,color:integer; begin write(Введите x: '); readln(x); write('Введите y: '); readln(y); write('Введите color: '); readln(color); gd:=detect; InitGraph(gd,gm,'tp\BGI'); clearDevice; PutPixel(x,y,color); readln; end. Выполнить
Y X x1 y1 x2 y2 Проводит прямую линию из точки с координатами (x1,y1) в точку с координатами (x2,y2). Положение текущего указателя не изменяется Line(x1,y1,x2,y2); (0,0)
Uses graph; var gd,gm,x,y,color:integer; begin gd:=detect; InitGraph(gd,gm,'tp\BGI'); write(Введите координату первой точки - x1,y1: '); readln(x1,y1); write(Введите координату второй точки - x2,y2: '); readln(x2,y2); clearDevice; Line(x1,y1,x2,y2); readln; end. Line(x1,y1,x2,y2); Выполнить Пример
LineRel(dx,dy); Проводит прямую линию из точки, где находится текущий указатель, в точку с приращением dx по оси X и dy по оси Y. Текущий указатель перемещается в точку (x+dx,y+dy). y+dy YY X x y dy dx x+dx (0,0) uses graph; var gd,gm,x,y,color:integer; begin gd:=detect; InitGraph(gd,gm,'tp\BGI'); write(dx,dy: '); readln(dx,dy); clearDevice; LineRel(dx,dy); readln; end. Выполнить
LineTo(x,y); X Y x y Проводит прямую линию из точки, где находится текущий указатель, в точку с координатами (x,y). Текущий указатель перемещается в точку (x,y). (0,0) uses graph; var gd,gm,x,y,color:integer; begin gd:=detect; InitGraph(gd,gm,'\tp\BGI'); write('x,y: '); readln(x,y); clearDevice; LineTo(x,y); readln; end. Выполнить
Y X y x Перемещает текущий указатель в точку (x,y), не рисуя линии на экране. MoveTo(x,y); (0,0)
Rectangle(x1,y1,x2,y2); Y X y2 x2 uses graph; var gd,gm,x1,y1,x2,y2:integer; Begin gd:=detect; InitGraph(gd,gm,'\tp\BGI'); write('x1,y1: '); readln(x1,y1); write('x2,y2: '); readln(x2,y2); clearDevice; Rectangle(x1,y1,x2,y2); readln; end. Рисует прямоугольник с координатами (x1,y1) верхний левый угол и (x2,y2) нижний правый угол x1 y1 Выполнить
uses graph; var gd,gm,x1,y1,X2,Y2,color:integer; begin gd:=detect; write('x1,y1: '); readln(x1,y1); write('x2,y2: '); readln(x2,y2); InitGraph(gd,gm,'\tp\BGI'); clearDevice; Rectangle(x1,y1,x2,y2); readln; end. Bar(x1,y1,x2,y2) Рисует заштрихованный прямоугольник с координатами (x1,y1) верхний левый угол и (x2,y2) нижний правый угол. Используется стандартный цвет и стиль заливки Y X y2 x2x1 y1 Выполнить
Bar3d(x1,y1,x2,y2,h,top) Выводит объемную (трехмерную) прямоугольную полосу толщиной h, Top логический параметр, принимающий значения TopOn или, TopOff, указывает, нужно ли изображать верхнюю грань (0,0) TopOn TopOff uses graph; var gd,gm,x1,y1,X2,Y2,h:integer; begin gd:=detect; write('x1,y1: '); readln(x1,y1); write('x2,y2: '); readln(x2,y2); write('h:'); readln(h); InitGraph(gd,gm,'\tp\BGI'); clearDevice; bar3d(x1,y1,x2,y2,h,topon); readln; end.
uses graph; var gd,gm,x,y,radius:integer; begin write(Введите x: '); readln(x); write(' Введите y: '); readln(y); write(' Введите radius: '); readln(radius); gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; circle(x,y,radius); readln; end. Circle(x,y,radius) Рисует окружность с центром в точке (x,y) и радиусом radius X Y (0,0)x y radius Выполнить
Arc( X,Y,StAngle,EndAngle,radius ) Дуга окружности от угла StАngle до угла ЕndAngle с центром в точке (x,y) и радиусом radius. Углы задаются в градусах по направлению против часовой стрелки (0,0) X Y x y StАngle ЕndAngle
Arc( X,Y,StAngle,EndAngle,radius ) (0, 0) X Y x y StАn gle ЕndAn gle Выполнить Uses graph; var gd,gm,x,y,radius,stangle,endangle:integer; begin write('Введите x: '); readln(x); write(Введите y: '); readln(y); write(Введите Stangle: '); readln(stangle); write(Введите Endangle: '); readln(endangle); write(Введите radius: '); readln(radius); gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; arc(x,y,Stangle,Endangle,radius); readln; end.
Ellipse( x,y,StAnge,EndAngle,Xradius,Yradius ) Дуга эллипса с центром в точке (x, y) и с радиусом Xradius (по оси Х), Yradius (по оси Y) от начального угла StАngle до конечного угла ЕndAngle. (0,0) X Y Значения StАngle=0 и ЕndAngle=360 приведут к вычерчиванию полного эллипса.
FillEllipse(x,Y,Xradius,Yradius ) Эллипс, заштрихованный текущим цветом и типом штриховки. (0,0) X Y
PieSlice( x,y,StAnge,EndAngle,radius ) Заштрихованный сектор круга с центром в точке(x,y). StAnge,EndAngle Начальный - StAnge, и конечный – EndAngle углы задаются в градусах (0,0) X Y x y StАngle ЕndAngle
Пример PieSlice( x,y,StAnge,EndAngle,radius ) (0,0) X Y x y StАngle ЕndAngle uses graph; var gd,gm,x,y,radius,stangle,endangle:i nteger; begin write('ВведитеҐ x: '); readln(x); write('Введите y: '); readln(y); write(' Введите stangle: '); readln(stangle); write(' Введите endangle: '); readln(endangle); write(' Введите radius: '); readln(radius); gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; arc(x,y,stangle,endangle,radius); readln; end. Выполнить
Sector(x,y,StAnge,EndAngle,Xradius,Yradius) Заштрихованный сектор эллипса, параметры те же, что у процедуры Ellipse. (0,0) X Y
Sector(x,y,StAnge,EndAngle,Xradius,Yradius) (0, 0) X Y uses graph; var gd,gm,x,y,xradius,yradius,stangle,endangle:integer; begin write 'Введите x: '); readln(x); write 'Введите y: '); readln(y); write 'Введите stangle: '); readln(stangle); write('Введите ўҐ¤ЁвҐ endangle: '); readln(endangle); write ('Введите xradius: '); readln(xradius); write('Введите yradius: '); readln(yradius); gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; sector(x,y,stangle,endangle,xradius,yradius); readln; end. Выполнить
DrawPoly( N,ArrayOfPoint ) Ломаная линия, которая имеет N вершин, координаты которых заданы в массиве записей ArrayOfPoint. (0,0) Координата вершины с номером 1 равна координате вершины с номером N
Пример DrawPoly(N,ArrayOfPoint) (0, 0) Uses graph; var i,gd,gm,x,y,radius,stangle,endangle:integer; a:array[1..6] of PointType; begin for i:=1 to 5 do begin write('Введите координату ',i,'-ой точки x,y: '); readln(a[i].x,a[i].y); end; a[6]:=a[1]; gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; SetColor(red); {Устанавливается красный цвет} DrawPoly(6,a); readln; end. Выполнить
FillPoly(N,ArrayOfPoint) Заштрихованная замкнутая фигура, параметры те же. (0,0) X Y
FillPoly(N,ArrayOfPoint) (0, 0) X Y Uses graph; var i,gd,gm,x,y,radius,stangle,endangle:integer; a:array[1..6] of PointType; begin for i:=1 to 5 do begin write('Введите ',i,'-ую точку x,y: '); readln(a[i].x,a[i].y); end; a[6]:=a[1]; gd:=detect; InitGraph(gd,gm,'\tp\BGI'); clearDevice; SetColor(red); FillPoly(6,a); readln; end. Выполнить
FloodFill(X,Y, Border_Color) Заливка произвольной замкнутой области с цветом границ Border_Color, (Х,Y) координаты любой внутренней точки. Заливка области выполняется установленными стилем и цветом. (0,0) Заливка областей x y
Установка цветов и стилей Процедуры установки сами по себе не производят никаких видимых изменений на экране, но установленные цвета и стили используются процедурами для вывода всех графических примитивов (кроме точки). Поэтому процедуры установки цветов и стилей должны предшествовать процедурам для изображения примитивов. Текущие установки сохраняются до тех пор пока не будут изменены другими процедурами установки.
Для графического режима текущие цвета – черный для фона и белый для линий и штриховок, текущие стили – сплошная линия и заливка. Всего имеется 12 стандартных стилей для штриховок и 4 для линий.
SetColor(Color); Устанавливает цвет выводимого изображения, задаваемый параметром Color. SetBkColor(Color); Устанавливает цвет фона.
Для данных значений стиля pattern=0 Thickness принимает два значения: 1 и 3 SetLineStyle( style, pattern, thickness) устанавливает стиль линии
SetFillStyle (style,color) Устанавливает стиль заливки.
Заливказначение Сплошная закраска фоновым цветом0 Сплошная закраска текущим цветом обводки1 Полосы горизонтальные2 Полосы наклонные тонкие3 Полосы наклонные толстые4 Полосы обратные наклонные очень толстые5 Полосы обратные наклонные чередующиеся (тонкая- толстая-тонкая) 6 Сетка7 Сетка наклонная крупная8 Ячейки9 Точки редкие10 Точки частые11 Программно определяемая заливка12 Пример Параметр style
(0,0) Y X Y Нарисуйте и раскрасьте домик Приступить