Некоторые сведения о драйверах н определяемых ими режимах
Адаптер | Драйвер | Режим (Номер, имя) | Разрешимость | Число страниц |
EGA | EGA | OEgalo | 640х200 | |
1 Egahi | 640х350 | |||
VGA | VGA | OVgalo | 640х200 | |
IVgalo | 640х350 | |||
2Vgalo | 640х480 |
Процедура инициализации в Турбо-Паскале имеет три аргумента:
Initgraph(<драйвep>, <режим>, '<путь к драйверу>').
Она может быть выполнена так:
uses graph;
var gd, gm: integer; {переменные gd и gm определяют драйвер и режим}
begin
gd:=vga; gm:=vgahi;
initgraph(gd,gm.'d:\tp551);
Первые две команды можно заменить одной:
gd:=detect
Целая константа detect=0 в модуле Graph автоматически распознает драйвер и устанавливает режим максимального разрешения для данной машины.
Процедура closegraph освобождает память от драйвера и устанавливает режим работы экрана, который был до инициализации графики.
Для обнаружения ошибок в графике применяются функции graphresult и grapherrormsg (код ошибки). Последняя выдает строку сообщения о характере ошибки, соответствующей коду. Инициализация графического режима с проверкой ошибок может быть выполнена в программе следующим образом:
uses graph; var gd, gm, errorcod: integer;
begin
gd:=detect; initgraph(gd,gm,");
errorcod'=graphresult;
if errorcod <>grok then
Begin
writeln('ошибка графики');
writeln(grapherrormsg(errorcod));
halt
end;
Процедура Halt останавливает выполнение программы и возвращает управление операционной системе.
Для формирования палитры используется система смешения красного, зеленого и синего цветов и изменения яркости луча. Цвет задается номером из списка цветов палитры в интервале 0 .. 15.
Процедуры sе1со1ог(<цвет>) и setbkcolor(<цвет>) устанавливают текущий цвет рисунка и цвет фона. При инициализации графики по умолчанию устанавливается черный фон и белый цвет рисунка.
В табл. 3.2 указаны основные процедуры для модуля Graph, применяющиеся для построения простейших геометрических примитивов.
Координаты точек воспринимаются в «экранной» системе координат, в которой начало - верхний левый угол экрана, ось «х» направлена вниз, ось «у» -направо. Максимальные значения координат определяются разрешимостью экрана (см. табл. 3.1).
Первый аргумент процедуры setlinestyle(a,b,t) а - стиль линии второй параметр b -«образец» - имеет значение 4, если а=4, в остальных случаях b=0; третий параметр t -толщина линии - может иметь значение 1 (нормальная толщина) или 3 (жирная линия).
Таблица 3.2
Основные процедуры модуля Graph
Заголовок процедуры | Геометрический смысл |
putpixel(x,y,c) | Построить точку (х,у) цветом с |
setlinestyle(a,b,t) | Установить стиль, образей и толщину линий |
line(xl,yl,x2,y2) | Соединить две точки отрезком |
rectangle(xl,yl.x2.y2) | Построить прямоугольник с заданными концами диагонали и |
сторонами, параллельными осям координат | |
circle(x,y,r) | Построить окружность с центром (х,у) и радиусом г |
arc(x,y,a,b,r) | Построить дугу окружности: a,b - начальный и конечный угол в |
Градусах | |
ellipse(x,y,a,b,rx,ry) | Построить эллиптическую дугу: rx, rу - полуоси эллипса |
setfillstyle(t,c) | Установить стиль закраски и ее цвет |
fillellipse(x,y,rx,ry) | Построить закрашенный эллипс, используя цвет рисунка |
floodfill(x,y,cg) | Закрасить фигуру до границы с цветом cg; (x,y) - внутренняя |
точка фигуры | |
bar(xl,yl,x2,y2) | Построить столбец, используя тип и цвет закраски |
pieslice(x,y,a,b.r) | Построить и закрасить сектор круга |
sector(x,y.a,b,rx,ry) | Построить и закрасить эллиптический сектор |
settextsiyle(f,n,d) | Установить шрифт, направление вывода и размер символа текста ' |
outtextxy(x,y,st) | Вывести строку st, начиная с точки (х,у) |
outtext(st) | Вывести строку, начиная с точки расположения текущего указателя |
Первый аргумент процедуры setfillstyle(t,c) - тип закраски t - принимает значения из интервала 0..12. Наиболее употребителен тип t = 1 - заполнение фигуры текущим цветом.
Для вывода текста на графический экран сначала выполняется процедура settextstyle(f,n,d), устанавливающая шрифт f, направление вывода п и размер символов (параметр d). При f = 0 используется стандартный точечный шрифт, встроенный в систему Турбо-Паскаль. С использованием других шрифтов познакомимся ниже. Направление вывода п принимает значения 0 (горизонтальный вывод) и 1 (вертикальный вывод).
Размер букв определяется параметром d, принимающим значения из интервала 1..10. Если d = 1 и f = 0, то каждый символ занимает квадрат 8*8 точек, при d > 1 сторона квадрата умножается на d.
Далее, с помощью процедуры outtextxy(x,y,st) строка st выводится на экран, начиная с точки (х,у).
Например:
settextstyle(0,0,2); оuttехtху(100,200,'горизонтальная строка');
оuttехtху(100,230,'размер увеличен вдвое');