Модуль Graph Для вывода графических изображений на экран монитора в языке Pascal 7.0 существует стандартная библиотека Graph, подключение которой осуществляется стандартным способом: u s es G ra p h ; В графическом режиме работы любое изображение на экране дисплея состоит из множества мельчайших элементов, называемых пикселями, а экран дисплея представляет собой прямоуголъную сетку координат. Левый верхний угол экрана имеет координаты (0,0), правый нижний – (639,479). Значение координаты х увеличивается слева направо, координаты у - сверху вниз. В этом режиме курсор невидим, но всегда присутствует. Образ любого изображения, высвечиваемого на экране монитора с помощью совокупности пикселей, хранится в специальной области памяти – видеопамяти. Реализация графического режима в ЭВМ обеспечивается с помощью графического адаптера. Работу графического адаптера поддерживает драйвер адаптера (файл с расширением *.bgi). Для современных графических адаптеров VGA и EGA используется драйвер egavga.bgi. Чтобы иметь возможность что-либо нарисовать, надо: 1. подключить модуль GRAPH; 2. указать расположение файла graph.tpu 3. определить графический драйвер и режим; 4. инициализировать графику; 5. если инициализация прошла без ошибки, можно что-нибудь нарисовать; 6. закрыть графический режим. Пример оформления программы для работы с графикой: Programm grafika; uses crt,graph; var gd,gm:integer; begin clrscr; {очистка экрана} gd:=0; initgraph(gd,gm,'C:\TP7\bgi'); {инициализация графики} {операторы рисования чего-либо} readkey; {пауза для просмотра результаты} closegraph; end. Вывод некоторых графических примитивов Модуль Graph позволяет выводить на экран изображение различных простых геометрических фигур (примитивов), а также получать информацию о них. Это осуществляется с помощью следующих процедур и функций: Arc(X, Y, StAngle, EndAngle, Radius : integer) рисует дугу с центром в точке (X, Y) от начального угла StAngle до конечного EndAngle радиусом Radius; Bar (XI, Yl, X2, Y2 : integer) выводит на экран закрашенный прямоугольник с координатами левого верхнего угла (Х1, У1) и правого нижнего угла (Х2, У2); Bar3D(Xl, Yl, X2, Y2 : integer; Depth : word; Top : boolean) выводит на экран трехмерную полосу, используя текущий стиль и цвет; Circle (X, Y, Radius : integer) выводит на экран изображение окружности с центром (X,Y) радиуса Radius; DrawPoly(NumPoints: word; var PolyPoints) рисует многоугольник из NumPoints вершин с координатами в PolyPoints, текущим цветом и типом линии; Ellipse(X, Y : integer; StAngle, EndAngle, XR, YR : word) рисует эллиптическую дугу от начального угла StAngle до конечного EndAngle, используя X, Y как координаты центра, XR, YR как горизонтальный и вертикальный радиусы; FillEllipse(X, Y, Xradius, Yradius : integer) выводит на экран изображение полного закрашенного эллипса с центром X, Y и горизонтальной и вертикальной полуосями Xradius,Yradius; FillPoly(NumPoints : word; var PolyPoints) рисует и штрихует многоугольник из NumPoints вершин с координатами в PolyPoints; Line (X1, Y1, X2, Y2 : integer) выводит на экран линию, соединяющую точки с координатами (X1,Y1) и (Х2, Y 2); LineTo(X, Y : integer) выводит на экран линию, соединяющую точку, в которой находится курсор, с точкой (Х, Y); PutPixel (X,Y,Color: integer) выводит на экран пиксель в точке X, Y цветом Color; Rectangle(X1,Y1,X2,Y2: integer) выводит на экран изображение прямоугольника. Управление графическими элементами Чтобы изменять цвет рисования, тип и толщину линий, способ заливки, в модуле Graph определен набор констант, процедур и функций. Основные процедуры из этого набора: SetBkColor (Color : integer) устанавливает текущий фоновый цвет Color; SetColor (Color: integer) устанавливает основной цвет рисования; GetColor: word-функция, возвращающая текущий цвет; GetBkColor: word - функция, возвращающая текущий фоновый цвет; S e tL in e Styl e(Li ne S til e, P atte rn ,T hi n kn ess : i n te ger) определяет стиль и толщину линии; SetPalette(ColorNum,Color: word) заменяет цвет палитры с номером ColorNum на цвет Color; S e tF i l l P a tt e r n ( P a tt e r n : F i l l P at te r n T y p e ;C o l or : word) позволяет установить произвольный образец штриховки; SetFil lStil e(P atte rn,Col or : inte ger ) устанавлива ет образец штриховки и цвет; FloodFill(X,У:integer; Border:word) штрихует замкнутую область, содержащую внутреннюю точку с координатами X, Y и ограниченную линией с цветом Border. Используется текущий образец штриховки и цвет; GetDefaultPalette (var Palette : PaletteType) возвращает текущую палитру в записи PaletteType; GetFillPattern(var FillPatt: FillPatternType ) возвращает текущий образец штриховки; GetLineSettings (var Linelnfо: LineSettingsType ) возвращает текущий стиль, шаблон и толщину линии; GetPalette (var Palette: PaletteType) возвращает текущую палитру и ее размер. Для определения цвета выводимых на экран различных геометрических фигур в модуле Graph описаны константы, представленные в таблице 6.1. Таблица 6.1 Константы цвета Название константы (цвет) Значение Название константы (цвет) Значение Black (черный) 0 DarkGray (темно-серый) 8 Blue (синий) Green (зеленый) Cyan (голубой) 1 2 3 LightBlue (ярко-синий) LightGreen (ярко-зеленый) LightCyan (ярко-голубой) 9 10 11 Red (красный) Magenta (фиолетовый) 4 5 LightRed (розовый) LightMagenta (малиновый) 12 13 Brown (коричневый) 6 Yellow (желтый) 14 LightGray (светло-серый) 7 White (белый) 15 Для задания стиля и толщины линии определены константы, приведенные в таблице 6.2 Таблица 6.2 Константы типов и толщины линий. Название константы SolidLn ___________________________ Значение константы 0 DottedLn ……………………………………. 1 CenterLn _._._._._._._._._._._._. 2 DashedLn _ _ _ _ _ _ _ _ _ _ _ _ _ _ 3 UserBitLn Изображение линии Тип, определяемый пользователем 4 Толщина линии может быть задана следующими константами: • нормальная толщина - 1 (NormWidth); • тройная толщина - 3 (ThickWidth). Шаблон (Pattern) выбирается из констант, приведенных в таблице 6.3. Таблица 6.3 Константы шаблона штриховки Название константы EmptyFill SolidFill LineFill LtSlashFill SlashFill BkSlashFill LtBkSlashFill HatchFill XHatchFill InterleaveFill WideDotFill CloseDotFill UserFill Значение Тип штриховки 0 1 Нет штриховки Сплошная штриховка 2 3 4 5 6 7 8 9 10 11 12 —— — ///// ///// (толстыми линиями) \\\\\ (толстыми линиями) \\\\\ +++++ хххххх штриховка в клетку штриховка редкими точками штриховка частыми точками задается пользователем Если выбрано значение UserFill, то устанавливается шаблон, заданный в SetFillPattern. Источник: Н.Е. Тимошевская, Е.А. Перышкина Основы алгоритмизации и программирования на языке Pascal. Справочник: Учеб. Пособие. – Томск, 2005. – 135 с.