Тема: МодульGraph.
План занятия:
- Организация модулей.
- Модуль Graph.
- Инициализация и выход из графического режима.
- Вывод графической информации.
- Управление цветом, фоном, стилем, шаблоном, толщиной линий, заполнением.
- Управление графическим курсором.
- Вывод текстовой информации.
Скачать:
Вложение | Размер |
---|---|
![]() | 66.5 КБ |
Предварительный просмотр:
Лекция №9
Тема: Модуль Graph.
План занятия:
- Организация модулей.
- Модуль Graph.
- Инициализация и выход из графического режима.
- Вывод графической информации.
- Управление цветом, фоном, стилем, шаблоном, толщиной линий, заполнением.
- Управление графическим курсором.
- Вывод текстовой информации.
Организация модулей
Использование модулей позволяет расширить возможности составления программ. Каждый модуль представляет собой набор констант, типов данных, переменных, процедур и функций. Каждый модуль по своей структуре аналогичен отдельной программе. Вместе с тем структура модуля позволяет использовать его как своеобразную библиотеку описаний. Каждый модуль записывается в отделльном файле с расширением tpu.
Модуль Graph
Модуль Graph поддерживает графический режим работы дисплея. В этом режиме любое изображение на экране дисплея синтезируется из множества мельчайших элементов, называемых пикселами. Каждый пиксел представляет собой светящуюся точку таких размеров, при которых промежуток между соседними пикселами отсуствует.
В графическом режиме экран дисплея разделяется прямоугольной сеткой координат. Левый верхний угол экрана имеет координаты (0,0). Значение координаты х увеличивается с лева направо, значение у увеличивается сверху вниз.
В графическом режиме курсор невидим, хотя и присутствует.
Образ любого изображения, высвечиваемого на экране монитора с помощью совокупности пикселов, хранится в специальной области памяти – видеопамяти.
Реализация графического режима в ЭВМ обеспечивается с помощью видеоадаптера. Работу графического адаптера поддерживает драйвер адаптера. Для графических адаптеров VGA и EGA, которые используются в данном классе, используется драйвер EGAVGA.BGI.
Светлые цвета:
DarkGray | 8 |
LightBlue | 9 |
LightGreen | 10 |
LightCyan | 11 |
LightRed | 12 |
LightMagenta | 13 |
Yellow | 14 |
White | 15 |
Для определиния цвета выводимых на экран различных геометрических фигур в модуле Graph описаны следуфщие константы: Тёмные цвета:
Black | 0 |
Blue | 1 |
Green | 2 |
Cyan | 3 |
Red | 4 |
Magenta | 5 |
Brown | 6 |
LightGray | 7 |
Инициализация и выход из графического режима
Графический режим инициализируется с помощью стандартной процедуры.
procedure InitGraph(var GraphDriver:Integer; var GraphMode: Integer;
PathToDriver: string);
При этом в переменной GraphDriver задается тип загружаемого драйвера (Detect(автоопределение), EGA,VGA…).
После загрузки драйвера, происходит его настройка на режим, заданный в переменной GraphMode (для VGA лучший режим –VGAHi(2), для EGA – EGAHi (1)).
В переменной PathToDriver задается путь к графическому драйверу.
Ошибки, каторые могут возникать в процессе инициализации графического режима, анализируют с помощью функции GraphRezult.
Для выхода из графического режима используетя стандартная функция CloseGraph.
Пример инициализации графического режима.
uses Graph;
var
grDriver: Integer;
grMode: Integer;
ErrCode: Integer;
begin
grDriver := Detect;
InitGraph(grDriver, grMode,'');
ErrCode := GraphResult;
if ErrCode = grOk then
begin
{ Выполнение работы в граф. режиме }
CloseGraph;
end
else Writeln('Ошибка:', GraphErrorMsg(ErrCode));
end.
Вывод графической информации
Модуль Graph позволяет выводить на экран изображение различных геометрических фигур, а также получать информацию о них. Это осуществляется с помощью следующих процедур и функций:
Arc(X,Y,StAngle,EndAngle,Radius:Integer); - рисует дугу с центром в точке (х,у), от начального угла StAngle до конечного EndAngle, радиусом Radius;
Bar(X1,Y1,X2,Y2); - выводит на экран закрашенный прямоугольник с координатами левого верхнего угла (Х1,У1) и правого нижнего угла (Х2,У2);
Circle(X,Y,Radius:Integer); - выводит на экран изображение окружности с центром (X,Y), радиусом Radius;
FillEllipse(X,Y,Xradius,Yradius: Integer);- выводит на экран изображение полного закрашенного эллипса с центром X,Y с горизонтальной и вертикальной полуосями Xradius,Yradius;
Line(X1,Y1,X2,Y2:Integer);- выводит на экран линию, соединяющую точки с координатами (X1,Y1) и (X2,Y2);
LineTo(X,Y:Integer) – выводит на экран линию, соединяющую точку, в которой находится курсор с точкой (X,Y);
PutPixel(X,Y,Color); - выводит на экран пиксел в точке X,Y, цветом Color;
Rectangle(X1,Y1,X2,Y2:Integer); – выводит на экран изображение прямоугольника;
Управление цветом, фоном, стилем, шаблоном, толщиной линий, заполнением
Для управления цветом и фоном используются следующие процедуры и функции:
SetBkColor(Color:integer); – устанавливает текущий фоновый цвет Color.
SetColor(Color: integer); – устанавливает текущий цвет изображения.
SetLineStyle(LineStile,Pattern,Thinkness:Integer); - определяет тип и толщину линии.
Стиль линии:
Line Styles:
SolidLn | 0 | |
DottedLn | 1 | |
CenterLn | 2 | |
DashedLn | 3 | |
UserBitLn | Определяется пользователем | 4 |
Ширина линии:
Нормальная ширина 1
Жирная линия 3
Pattern, если не определяется пользоваетелем, то ставится =0.
SetFillPattern(Pattern:FillPatternType; Color:Integer);
,где
FillPatternType=Array[1..8]Of Byte;
-Устанавливает шаблон и цвет.
SetFillStile(Pattern,Color:Integer);
Устанавливает шаблон и цвет заполнения.
Pattern выбирается из констант:
Имя константы | Значение | Результат: |
EmptyFill | 0 | Использовать цвет фона |
SolidFill | 1 | Использовать цвет рисования |
LineFill | 2 | Пунктирная линия |
LtSlashFill | 3 | /// Наклонные линии |
SlashFill | 4 | /// Жирные наклонные линии |
BkSlashFill | 5 | \\\ Жирные наклонные линии |
LtBkSlashFill | 6 | \\\ наклонные линии |
HatchFill | 7 | «Светлая штриховка» |
XHatchFill | 8 | «Жирные» кресты |
InterleaveFill | 9 | Прерывистая линия |
WideDotFill | 10 | Редкие точки |
CloseDotFill | 11 | Частые точки |
UserFill | 12 | Определяется пользователем |
, если Pattern=UserFill, то становится активным шаблон, заполненный в SetFillPattern.
Управление графическим курсором
Курсор в графическом режиме представляет собой точку с координатами (X,Y). Для управления курсором определены следующие процедуры и функции:
GetMaxX:Integer - возвращает максимальное значение координаты X;
GetMaxY:Integer - возвращает максимальное значение координаты Y;
GetX:Integer – возвращает координату Х курсора;
GetY:Integer – возвращает координату Y курсора;
MoveRe(Dx,Dy:Integer); - перемещает курсор в точку, которая находится на расстоянии Dx, Dy от курсора;
MoveTo(X,Y:Integer); - перемещает указатель в точку X,Y;
Вывод текстовой информации
В графическом режиме вывод текстовой информации осуществляется с помощью шрифтов. Шрифты хранятся в файле с расширением CHR. При использовании шрифтов, они автоматически загружаются с диска.
Вывод текстовой информации в графическом режиме осуществляется с помощью следующих процедур:
OutText(TextString:String); - вывод строки TextString, начиная с позиции курсора;
OutTextXY(X,Y:Integer; TextString:String); - вывод строки TextString, начиная с позиции X,Y.