Билет 18. Вопрос 1. Графические возможности языка ПАСКАЛЬ.
Этот модуль используется для создания графических изображений различной сложности. Все процедуры и функции данного модуля хранятся на диске в файле GRAPH.TPU. В графическом режиме экран компьютера представляет собой множество точек (пикселов). Их число зависит от типа дисплея: CGA - 640*200 EGA - 640*350 VGA - 640*480 ( Наш размер ) SVGA - 1024*786
ИНИЦИАЛИЗАЦИЯ ГРАФИЧЕСКОГО РЕЖИМА.
Для инициализации модуля GRAPH требуется: 1) подключить его в программе после заголовка по команде USES GRAPH; 2) сама инициализация выполняется по команде INITGRAPH( DRIVER, MODE, '') , где DRIVER, MODE - имена переменных целого типа, описанные в разделе VAR. Значение переменной DRIVER можно определить до инициализации по команде DRIVER:=DETECT. Ее выполняют в том случае, когда вы не знаете тип вашего дисплея. Команда DETECT позволяет автоматически определить тип вашего дисплея. Параметр MODE задает режим работы экрана. '' - строка, указывающая на путь к директории, где располо- жены графические драйверы *.BGI. Например: 'C:\BP\BGI' Если они находятся там же, где и файл TURBO.EXE, то эта строка может быть пустой. 3) перед выходом из программы графический режим нужно закрыть командой CLOSEGRAPH.
Общий вид программы для работы с графикой:
program vv; uses GRAPH; var grd, grm:integer; begin grd:=detect; initgraph (grd, grm, ''); ( вызов процедуры ) ..... ..... closegraph end. После инициализации графического режима можно: 1) выполнять графические построения; 2) выводить текст; 3) использовать элементы движения изображений. В конце работы с графическим режимом необходимо обязательно выйти из него с помощью команды CLOSEGRAPH.
ОПИСАНИЕ ОСНОВНЫХ ПРОЦЕДУР И ФУНКЦИЙ МОДУЛЯ GRAPH.
setcolor (c) -устанавливает текущий цвет изображения, где c - число соответствующее номеру цвета. setbkcolor (c) - устанавливает текущий цвет фона.
Управление курсором (указателем).
moveto (x,y) - перенести текущий указатель в точку (X,Y). moverel (dx,dy) - переместиться в точку с координатами x+dx, y+dy. Или другими словами сместиться на вектор (dx,dy) относительно текущей точки. putpixel (x,y,cоlor) - рисуется точка с координатами (x,y) указанного цвета.
Установка стиля линий.
Есть возможность рисовать контур разными типами линий. setlinestyle (тип строки, 0, толщина) Тип строки: 0 - сплошная линия; 1 - пунктирная линия; 2 - штрих-пунктирная линия; 3 - штриховая. Толщина: 1 - нормальная; 3 - жирная. Рисование контурных геометрических изображений
Для этих изображений цвет фона и текущий цвет устанавливаются описанными выше средствами. line (x1,y1,x2,y2) - нарисовать линию, соединяющую точки (x1,y1) и (x2,y2) текущим цветом. lineto (x,y ) - соединяет текущую точку с точкой (x,y). rectangle (x1,y1,x2,y2) - контур прямоугольника с диагональю (x1,y1,x2,y2). circle (x,y,r) - окружность с центром (x,y) радиусом r. ellipse (x,y,n,k,r1,r2) - эллиптическая дуга, x, y - координаты центра, n,k - начальный и конечный угол в градусах, r1,r2 - горизонтальная и вертикальная полуоси. arc (x,y,n,k,r) - дуга окружности.
Вывод текста на графический экран.
Очистка графического экрана: cleardevice - очистка текущим цветом фона; clearviewport - очистка цветом 0. Команды readln(n), writeln(n) действуют только в текстовом экране. Для вывода текста на экран в графическом режиме используются различные шаблоны. Для вывода текста используются две команды: outtext(s); s - переменная или константа строкового типа. Эта команда вызывает вывод строки s, начиная с позиции текущего курсора текущим цветом. После вывода текста текущий указатель смещается в его конец. outtextxy(x1,y1,s); x1,y1 - координата начала вывода текста, s - переменная или константа строкового типа. ПРИМЕРЫ. outtext('НАЖМИТЕ ЛЮБУЮ КЛАВИШУ'); outtextxy(50,100,'НАЖМИТЕ ЛЮБУЮ КЛАВИШУ'); Установка шрифта и стиля.
settextstyle (шрифт, направление, размер символов)
Шрифт: 0 - матричный ( 8*8 ); (Мы только его будем использовать) 1 - полужирный; 2 - тонкий; 3 - рубленый; 4 - готический. Направление: 0 - слева направо; 1 - снизу вверх; 2 - слева направо боком. Размер символов: 1 - норма; 2 - больше; 3 - еще больше и т.д. Вывод чисел.
Для вывода чисел необходимо использовать процедуру перевода числа в строковую переменную: str (i,s) Пример : i:integer; s:string; begin i:=5; str(i,s); outtextxy(100,30,s); end. Рисование закрашенных изображений
При закраске таких изображений команда setcolor не действует. Для рисования и закрашивания используется специальная команда цвета со своим шаблоном и номером цвета: setfillstyle (sh,c1). sh - шаблон закраски, число от 0 до 12: 0 - область заполняется цветом фона; 1 - сплошная закраска цветом c1; 2 - шаблон закраски линиями ; 3 - // нормальной толщины; 4 - // удвоенной толщины; 5 - \\ удвоенной толщины; 6 - \\ нормальной толщины; 7 - заполнение клеткой; 8 - заполнение косой редкой клеткой; 9 - заполнение косой частой клеткой; 10 - заполнение редкими точками; 11 - заполнение частыми точками; Все шаблоны цветом c1. c1 - номер цвета закраски. floodfill (x,y,c) закрашивает область внутри или вне замкнутой фигуры установленным стилем ( по команде setfillstyle.) x,y - координаты точки внутри или вне замкнутого контура. с - цвет контура, являющийся границей распространения заливки. Пример прямоугольника, левая верхняя половина закрашена линиями, а правая нижняя - точками. setcolor (3); rectangle (10,10,630,470); line (10,470,630,10); setfillstyle (3,4);floodfill (20,20,3); setfillstyle (10,5);floodfill (620,460,3); Закрашенный прямоугольник.
bar (x1,y1,x2,y2) , где (x1,y1) и (x2,y2) - координаты противоположных углов. ПРИМЕР: setfillstyle (11,12); bar (10,20,100,200) Параллелепипед.
bar3d (x1,y1,x2,y2,d,e), где x1,y1,x2,y2 - координаты диагонали передней грани. d - длина изображения; e - значение булевого типа. Если e - истинно (TRUE), то рисуется верхняя грань; если e - FALSE - не рисуется. ПРИМЕР: После выполнения этой команды на экране появляется соответствующий параллелепипед с закрашенной передней гранью. setfillstyle (1,12) bar 3d (50,70,150,200,40,true). Закрашенный эллипс .
fillellipse ( x,y,r1,r2); (x,y) - центр эллипса , r1,r2 - полуоси . Секторы круга и эллипса.
pieslice (x,y,u1,u2,r); сектор круга с центром в точке (x,y) и радиусом r. u1,u2 - начальный и конечный углы в градусах. Сам контур сектора рисуется текущим цветом. sector (x,y,u1,u2,r1,r2) - сектор эллипса закрасится тем цветом, который в шаблоне, контуры будут нарисованы текущим цветом. Параметры такие же как и в эллиптической дуге. Изображение многоугольника
drowpoly (число вершин, координаты вершин) рисуется контур многоугольника с указанными вершинами. fillpoly (число вершин, координаты вершин) - закрашенный многогольник.
|