Модуль Graph

advertisement
Модуль 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 с.
Download