Работа с графикой

Машинная (компьютерная) графика - одно из важных направлений в современной прикладной информатике. В отличие от базового Паскаля, современные версии содержат мощные средства разработки графических программ. Рассмотрим часть соответствующих возможностей Турбо-Паскаля, в котором они реализованы с помощью стандартного модуля Graph.

Модуль представляет собой мощную библиотеку графических подпрограмм универсального назначения, рассчитанную на работу с наиболее распространенными графическими адаптерами CGA, EGA, VGA, SVGA IBM-совместимых персональных компьютеров.

Подключение модуля Graph, tpu к программе выполняется директивой

uses graph;

Инициализация графического экрана осуществляется с помощью процедуры Initgraph. Драйвер поддерживает тот или иной режим экрана, табл. 3.1.

Таблица 3.1

Некоторые сведения о драйверах н определяемых ими режимах

Адаптер Драйвер Режим (Номер, имя) Разрешимость Число страниц
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,'размер увеличен вдвое');


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: