Графические процедуры
Arc (x,y: integer; St,En,R: word); {рисование дуги, где x,y - коорд. центра дуги, R - радиус, St, En - нач. и конечный углы. }
ClearDevice; {очистка экрана}
Circle (x,y: integer; R: word); {окружность радиуса R
cцентром в точке (x,y) }
CloseGraph; {закрытие графики}
InitGraph (gd,gm: integer; Path: string); {инициализация графики, где
gd - графический драйвер,
gm - графический режим,
Path - путь размещения файла
с расширением. bgi. }
Line (x1,y1,x2,y2: integer); {рисование линии, проходящей через две точки:
с координатами (x1,y1) и (x2,y2) }
LineRel (dx,dy: integer); {рисование линии: dx, dy - приращения
координат к координатам текущей
позиции курсора}
LineTo (x,y: integer); {рисование линии, проходящую через текущую
позицию курсора и точку с координатами (x,y) }
Moveto (x,y: integer); {задание координат текущей точки}
OutText (T: string); {вывод текста в текущую точку}
OutTextXY (x,y: integer; T: string); {вывод текста в точку с координатами х, у }
Rectangle (x1,y1,x2,y2: integer); {рисование прямоугольника: (x1,y1) и (x2,y2) - координаты противоположных вершин}
PutPixel (x,y: integer; c: word); {выводит точку с координатами (х, у) цветом с }
Графические функции
GetMaxX - определяет максимальный размер экрана по оси x.
GetMaxY - определяет максимальный размер экрана по оси y.
GetX - координата текущей позиции курсора по оси x.
GetY - координата текущей позиции курсора по оси y.
Машинные координаты.
Начало машинной системы координат, направление осей, а также максимальные значения координат монитора показаны на рисунке
На рисунке приведена также машинная (xm, ym) и физическая (x,y) системы координат. Для изображения на экране точки с физическими координатами (x,y) необходимо определить ее машинные координаты (xm, ym). Расчетные формулы имеют следующий вид (попробуйте самостоятельно получить эти формулы):
xm=x0+x*Mx,
ym=y0-y*My,
где Mx, My-масштабы соответственно по осям x и y, которые показывают число пикселей в одной физической единице,
x, y - физические координаты точки,
xm, ym - машинные координаты точки,
x0, y0 - машинные координаты начала физической системы координат.
Пример. Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора.
Этапы разработки программы сведены в таблицу.
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Нарисовать через весь экран горизонтальную и вертикальную линии, пересекающиеся в центре монитора. |
2. | Математическое описание | Изобразим вид экрана с указанием координат
требуемых линий
![]() |
3. | Разработка структограммы | ![]() |
4. | Написание программы | Program P5; Uses graph; {подключение граф. модуля} Var gd,gm: integer; Begin gd: =detect; {определение граф. драйвера} InitGraph (gd,gm,’ ‘); {инициализация графики} Line (0, round (GetMaxY/2), GetMaxX, Round (GetMaxY/2));{гориз. лин. } Line (round (GetMaxX/2), 0,Round (GetMaxX/2), GetMaxY); {вертик. лин. } Readln; {пустой ввод} CloseGraph;{закрытие графики} End. |
5. | Отладка и получение результатов | Выполнить самостоятельно |
Пример. Написать программу построения графика функции y=x2 для x∈ [-1; 1].
Этапы разработки программы сведены в таблицу.
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Построить график функции y=x2 для x∈ [-1; 1]. |
2. | Математическое описание | Изобразим вид экрана, который мы хотели бы получить после выполнения программы.
![]() |
3. | Разработка структограммы | ![]() |
4. | Написание программы | Program P6; Uses graph; Var gd,gm: integer; x,y: real; x0,y0,xm,ym,Mx,My: integer; begin gd: =detect; InitGraph (gd,gm,’ ‘); Mx: =300; x0: =320; My: =440; y0: =460; {выбраны для монитора 640×480 пикс. } For xm: =20 to 620 do Begin x: = (xm-x0) /Mx; y: =sqr (x); ym: =round (y0-y*My); PutPixel (xm,ym,1); End; Readln; CloseGraph; End. |
5. | Отладка и получение результатов | Выполнить самостоятельно |
Модуль Graph
ТР обладает достаточно разнообразными средствами для работы со стандартным VGA экраном (возможно также использование и и других типов видеоадаптеров).
VGA адаптер имеет разрешение 640х480 пиксел (точка (0,0) в левом верхнем углу экрана), 16 цветов.
Перед началом работы с графикой необходимо ее инициализировать, а по окончании - "закрыть". Все графические процедуры и функции находятся в модуле Graph, поэтому также необходимо его подключение.
Общая структура графической программы:
Uses crt, graph;
var Gd, Gm: Integer;
begin
Gd: = Detect;
InitGraph (Gd, Gm, 'c: \bp\bgi');
...
{Здесь построение изображения}
...
ReadKey;
CloseGraph;
end.
Путь c: \bp\bgi указывает расположение файла egavga. bgi (драйвер графического адаптера). На разный компьютерах этот путь может быть разным. Если файл egavga. bgi поместить в каталог с программой, то путь можно не указывать.
Основные графические процедуры и функции:
Построение фигур
PutPixel (x,y,c) - отображает на экране точку с координатами (x,y) и цветом c
Line (x1,y1,x2,y2) - рисует линию с началом в точке (x1,y1) и концом - (x2,y2)
Rectangle (x1,y1,x2,y2) - рисует контур прямоугольника с диагональю (x1,y1) - (x2,y2)
Bar (x1,y1,x2,y2) - рисует закрашенный прямоугольник с диагональю (x1,y1) - (x2,y2)
Circle (x,y,r) - рисует окружность с центром (x,y) и радиусом r
Ellipse (x,y,ba,ea,xr,yr) - рисует дугу эллипса с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr, и начальным и конечным углом ba и ea
FillEllipse (x,y,xr,yr) - рисует закрашенный эллипс с центром в (x,y), горизонтальным и вертикальным радиусом xr и yr
Определение цветов и стилей
GetPixel (x,y) - возвращает цвет пиксела с координатами (x,y)
SetColor (c) - устанавливает цвет изображения (для линий)
SetFillStyle (p,c) - устанавливает текущий стиль p и цвет c (для "закрашенных" фигур)
FloodFill (x,y,b) - закрашивает замкнутую область с внутренней точкой (x,y) и цветом контура b
Работа с текстом
OutTextXY (x,y,st) - выводит на экран строку st с позиции (x,y)
SetTextStyle (f,d,s) - устанавливает шрифт f, его направление d и размер
Сообщения об ошибках
function GraphErrorMsg (ErrorCode: integer): String; Возвращает строку сообщения об ошибке для заданного кода ErrorCode.
function GraphResult: integer; Возвращает код ошибки для последней графической операции.