Графический режим работы (0, 0)
Графический режим работы (0, 0) x y ( Get. Maxx, Get. Maxy ) Графические драйверы располагаются в подкаталоге BGI EGAVGA. BGI
Инициализация графического режима Init. Graph (GDriver, CMode, Dpath); GDriver- 1) явно GDriver: =VGA; 2) автоопредел. GDriver : =DETECT; CMode- если GDriver задан явно, то и режим явно: 0, 1, 2 если автоопредел. , то можно не указывать, тогда выбирается реж. наибольшего разрешения. Dpath- путь к графическим файлам. Если процедура Init. Graph не сработала, то GDriver будет содержать код ошибки. Error: = Graph. Result; Graph. Error. MSG(Error); - выдает сообщение об ошибке на англ. яз.
Uses Graph; Procedure GRinit; var GDriver, CMode, Error: integer; begin GDriver: =detect; Init. Graph (GDriver, CMode, ' '); Error: =Graph. Result; if Error<>GRok then begin writeln('ошибка', Graph. Error. MSG(Error)); halt end; Begin GRinit; <рисование> Readln; {задержка изобр. на экране } Close. Graph; { выгружается графический режим} End.
Рисование графических примитивов Set. Color(<цвет>); где <цвет>- N цвета( 1 -15) или название (red); -цвет пера; Set. Bkcolor(<цвет>); -цвет фона; Put. Pixel(x, y, <цвет>); -выделение пиксела указанным цветом; Рисование линий Line(x 1, y 1, x 2, y 2); Line. To(x, y); Line. Rel(dx, dy); Задание толщины и стиля линий Set. Line. Style(<тип>, <шаблон>, <толщина>); <тип>: Solidln=0{__}, Dotteln=1{…. }, Centerln=2{ ∙ ∙}, Dashdln=3{ }, User. Bitln=4{пользовательский тип} <шаблон>: 0 если <тип> =0 3 ; если<тип>=4, то формируем из 16 пиксел( 1 -светится, 0 - погашен: 11001100); число записывается в 10 -ой или 16 -ой с. с. ; <толщина>: Normwidth=1, Thickwidth=3.
ФУНКЦИИ ОПРОСА МЕСТОПОЛОЖЕНИЯ КУРСОРА Get. X, Get. Y-опред. тек. кооринат; Move. To(x, y), Move. Rel(dx, dy)-перемещение ; Get. Max. X, Get. Max. Y-разрешающая способность по горизонтали и вертикали ; ПОСТРОЕНИЕ ФИГУР С БОЛЬШИМ КОЛИЧЕСТВОМ ВЕРШИН (многоугольников и графиков ф-ий) Draw. Poly(Np, Point); где Np- кол. вешин, если фигура замкнутая, то Np=N+1; Var Point: array[1. . N] of Point. Type; массив координат вершин или точек графика Point. Type= record x, y: integer end; - тип модуля Graph;
Построить график функции Y=SIN (x) при x [0, 2 ] c h=0, 01 N=(2 -0)/(0, 01 )=200 - количество точек графика
uses Graph; begin const n=201; GRinit; var a: =0; b: =2*pi; h: =0. 01*pi; F: array[1. . n] of Point. Type; my: =Get. Maxy div 2; a, b, h: real; my, i: word; for i: =1 to n do Procedure GRinit; begin var GDriver, CMode, Error: integer; F[i]. x: =10+round(a*100); begin F[i]. y: =my+round(-Sin(a)*100); GDriver: =detect; a: =a+h; Init. Graph (GDriver, CMode, ''); end; Error: =Graph. Result; Line(10, my, Get. Maxx-10, my); if Error<>GRok then begin Out. Text xy(Get. Maxx-10, my, 'x'); Writeln ('ошибка', Line(10, 10, Get. Maxy); Graph. Error. MSG(Error)); Out. Text xy(10, 'y'); halt Set. Color(red); end; Draw. Poly(n, F); end; Readln; Close Graph; end.
Работа с фрагментами изображений 1. Нарисовать изображение в любом месте экрана. 2. Узнать размер min прямоугольника , содержащего изображение. 3. size: =Image. Size(x 1, y 1, x 2, y 2); (x 1, y 1) 4. (x 2, y 2) 3. Создание буфера в оперативной памяти Get. Mem(P, size); где Р- ссылочная переменная (адрес начала буфера), Р: pointer; 4. Считываем изображение в буфер Get. Image(x 1, y 1, x 2, y 2, P^) Что считываем Куда считываем 5. Помещаем изображение из буфера в любое место экрана 6. Put. Image(x, y, P^, <режим>); (x, y) <режим>: Сopy. Put, Точка экрана, куда Откуда считываем помещаем изображение 7. Xor. Put,
Put. Image (x, y, P^, xorput); - рисование Delay(20); Put. Image (x, y, P^, xorput); - стирание 6. Удаление буфера Free. Mem (P, Size);
Нарисовать объект , движущийся из левого верхнего угла экрана в правый нижний.
Uses CRT, GRAPH; Var x, y, r: integer; p: pointer; size: word; dx, dy: integer; <описание процедуры инициализации граф. режима GRINIT> Begin GRINIT; R: =10; Set. Fill. Style(solidfill, green); Pieslice (10, 0, 360, r); Size: = Image. Size(1, 1, 20); Get. Mem(p, Size); Get. Image(1, 1, 20, p^); Set. Fill. Style(1, white); Bar(0, 0, getmaxx, getmaxy); X: =0; Y: =0; dx: =3; dy: =2;
Repeat Put. Image (x, y, P^, xorput); Delay(20); Put. Image (x, y, P^, xorput); Inc(x, dx); Inc(y, dy); until (x>=Getmaxx) or (y>= Getmaxy); Free. Mem(p, s); Readln; Close. Graph; End.

