Язык программирования Паскаль 7.0 содержит обширный набор типов, констант и функций для управления графическим режимом работы экрана, объединенных в стандартный библиотечный модуль GRAPH. С помощью подпрограмм, входящих в данный модуль, можно создавать сложные графические изображения, основанные на использовании разнообразных геометрических фигур- При необходимости замкнутые фигуры могут быть закрашены различными цветами и стилями (образцами) закраски. Для вывода текстовых надписей на графический экран могут быть использованы четыре штриховых и один матричный шрифт.
Подпрограммы модуля GRAPHмогут поддерживать различные типы аппаратных графических средств. Настройка на конкретные технические средства осуществляется с помощью специальных программ — драйверов, поставляемых вместе с данным модулем.
Установка графического режима работы
Переход в графический режим в среде Паскаль осуществляется с помощью входящей в модуль GRAPHпроцедуры InitGraph, служащей для инициализации графического экрана. Данная процедура имеет следующий формат:
InitGraph(varDriver, Mode:integer; Path:string),
где переменные Driverи Modeдолжны содержать тип графического драйвера и его режим работы. Допускается указать Driver=0 для автоматического определения данных параметров по результатам тестирования аппаратуры. Параметр Pathопределяет маршрут поиска файла графического адаптера.
Графические операторы языка Паскаль позволяют адресоваться к любому элементу (пикселю) графического окна и управлять светимостью этого элемента. Для указания пикселя используется следующая система координат: начало координат (0,0) располагается в левом верхнем углу экрана; горизонтальная координата Xувеличивается слева направо, вертикальная координата Yувеличивается сверху вниз. При стандартном графическом адаптере VGA(в режиме 640x480) правый нижний угол экрана имеет координаты (639,479), а центр экрана - координаты (319,239).
Для выхода из графического режима достаточно воспользоваться процедурой CloseGraph. Использование цветов
Язык программирования Паскаль 7.0 поддерживает 16 основных цветов, обозначаемых соответственно номерами от 0 до 15 (см. таблицу 1).
Таблица 1 Константы цвета
Константа цвета |
Цвет |
Константа цвета |
Цвет |
0(Black) |
Черный |
8 (DarkGray) |
Гемносерый |
1 (Blue) |
Синий |
9 (LightBlue) |
Яркосиний |
2 (Green) |
Зеленый |
lO(LightGreen) |
Яркозеленый |
3 (Cyan) |
Голубой |
11 (LightCyan) |
Яркоголубой |
4 (Red) |
Красный |
12 (LightRed) |
Розовый |
5 (Magenta) |
Фиолетовый |
13 (LightMagenta) |
Малиновый |
6 (Brown) |
Коричневый |
14 (Yellow) |
Желтый |
7 (LightGray) |
Светлосерый |
15 (White) |
Белый |
Основными графическими операторами по работе с цветами являются процедуры модуля GRAPHпод именами SetBkColor(служит для установки цвета фона) и SetColor(для установки цвета рисования).
Формат данных операторов следующий". SetBkColor (Color: word);
SetColor (Color: word),
где переменная Color, имеющая целочисленный тип word, служит для указания требуемого номера цвета.
Например, операторы SetBkColor (I); SetColor(14) позволяют установить режим рисования желтым цветом по синему фону.
Создание графических объектов
В состав модуля GRAPHвходит достаточно большое количество подпрограмм, служащих для вывода на экран разнообразных графических объектов. Основными процедурами данного типа являются:
Rectangle(xl, yl, х2, y2: integer) - служит для рисования прямоугольников, задаваемых координатами двух своих противоположных углов;
Bar(xl, yl, x2, y2: integer) - служит для рисования заштрихованных прямоугольников, используя при этом текущий стиль и цвет штриховки;
SetFillStyle(Pattern, Color: word) - устанавливает образец штриховки и ее цвет, где переменная Patternобозначает номер шаблона штриховки (см. таблицу 2), aColor- номер цвета штриховки (см. таблицу 1);
Circle(x, у: integer; r: word) - рисует окружность радиуса г с центром в точке (х, у); Line(xl, yl, x2, y2: integer) - рисует линию от точки (xl, yl) до точки (х2, у2);
PieSHce(x, у: integer; StAngle, EndAngle, nword) - рисует и заштриховывает сектор окружности радиусом г с центром в (х, у) от начального угла StAngleк конечному углу EndAngle. При этом используется текущий стиль и цвет штриховки (см. процедуру SetFillStyle);
PutPixel(x, у: integer; Color:word) - выводит на экран точку цвета Colorс координатами (х, у);
OutTextXY(x, y:integer; TextString:string) — выводит техт TextStringв заданное координатами (х, у) место экрана.
Таблица 2 Шаблоны штриховки
Номер |
Стиль штриховки |
Номер |
Стиль штриховки |
0 |
Нет штриховки |
6 |
Наклонная влево |
1 |
Сплошная (заливка) |
7 |
В клетку по образцу +++ |
2 |
Горизонтальными линиями |
8 |
В клетку по образцу ххх |
3 |
Наклонная вправо |
9 |
Штриховка в мелкую клетку |
4 |
Наклонная вправо толстыми линиями |
10 |
Редкими точками |
5 |
Наклонная влево толстыми линиями |
11 |
Частыми точками |
Стандартный режим работы в среде Турбо Паскаля - текстовый. В этом режиме на экран выводятся только известные компьютеру символы.
В графическом режиме экран дисплея можно рассматривать как совокупность близко расположенных точек. Точку экрана называют пиксель или пиксел (pixel). Светимость этих точек может регулироваться программой. Пикселы образуют прямоугольную таблицу - растр с нумерацией элементов относительно левого верхнего угла экрана - точки с координатами (0; 0).
Для представления символов текстовой информации используется матрица с фиксированным количеством пикселов. Знакоместо каждого символа - прямоугольник размером, к примеру, 8x8, 8x14, 8x16 и т.д.; - в знакоместо при помощи программы помещается растровое изображение символа.
Графические возможности конкретного видеоадаптера (видеокарты) определяются разрешающей способностью (разрешением) монитора, т.е. общим количеством пикселов, а также количеством цветов (оттенков), которыми может светиться каждый из них. Современные мониторы поддерживают разрешение
800x600 точек, 1024x768 точек и более. Чем выше разрешающая способность монитора, тем качественнее изображение. Многие видеоадаптеры могут работать с несколькими графическими страницами.
Графическая страница - область оперативной памяти, используемая для создания "карты" экрана -информации о светимости (цвете) каждого пиксела. На одном и том же компьютере количество точек и количество возможных цветов можно изменять в процессе работы, выбирая графический режим - одну из предусмотренных в конструкции компьютера комбинаций значений.
Драйвер - это программа, управляющая определенным устройством ПК. Графический драйвер управляет дисплейным адаптером в графическом режиме. Графические драйверы обычно располагаются на диске в подкаталоге BGIрабочего каталога в виде файлов с расширением .BG1 (BorlandGraphicInterface).
В ТП 7.0 есть стандартный библиотечный модуль Graph- библиотека подпрограмм, обеспечивающих управление графическими режимами видеоадаптеров: CGA, EGA, VGA, MCGA, Hercules, PC3270, AT&T6300, IBM8514.
Библиотека Graphсодержит около 80 графических процедур и функций, а также десятки констант и описаний типов данных [6, 7]. Подключение модуля происходит при помощи зарезервированного слова USES (usesGraph;).
Модуль Graph- файл GRAPH.TPU. Для работы с графикой этот файл должен быть доступным для компилятора, т.к. GRAPH.TPUне входит в состав библиотеки TURBO.TPL. В поле UNITопции DIRECTORIES / OPTIONSглавного меню среды Турбо Паскаля следует указать каталог, в котором размещен файл GRAPH.TPU.
Для использования различных шрифтов при выводе текста (кроме кириллицы) нужно скопировать файлы с расширением .CHRв рабочий каталог. При запуске программы с кириллицей скопируйте файл EGAVGA.BGIв рабочий каталог.
Любая программа для работы с графикой должна содержать блоки вызова процедуры инициализации графического режима InitGraph- правильность выполнения этой процедуры проверяется функцией GraphResult(0-в случае успеха) - и процедуры выхода из графического режима CloseGraph.
Процедуры и функции из библиотеки Graph
Обращение Действие
InitGraph (Driver, Mode, F) Инициирует графический режим работы адаптера
CloseGraphЗавершает работу адаптера в графическом режиме
RestoreCrtModeСлужит для кратковременного возврата в текстовый режим
ClearDeviceОчищает экран, закрашивает его в цвет фона
ClearViewPortОчищает графическое окно
SetGraphMode(Mode) Устанавливает новый графический режим работы адаптера; значения Mode- в конце
главы
SetViewPort(Xl, Yl, X2, Y2, Т) Устанавливает прямоугольное окно на экране: X1,Y1 - координаты левого
верхнего, Х2, Y2 - координаты правого нижнего углов окна, Т - выражение типа Boolean, определяющее
"отсечку" не умещающихся в окне элементов изображения (True- "отсекать")
SetPalette(Reg, Col) Формирует новое значение Colв регистре с номером Reg(установка одного цвета
палитры)
SetAllPalette(Palette) Производит смену кодов цветности во всех регистрах палитры
SetBkColor (Color) Устанавливает цвет фона (целое число от 0 до 15)
SetColor (Color) Устанавливает цвет для выводимых символов и линий, Color- выражение типа Word
PutPixel (X, Y, Color) Выводит точку с координатами X, Yцветом Color
Line (XI, Yl, X2, Y2) Рисует отрезок линии по коордимнатам его концов
LineRel (Xh, Yh) Вычерчивает линию от текущего положения указателя до положения, заданного
приращениями его координат Xhи Yh(выражения типа Integer)
LineTo (X, Y)
Вычерчивает линию от текущего положения указателя до положения, заданного его новыми координатами
MoveRel (DX, DY) Устанавливает новое положение указателя в координатах относительно предыдущего
MoveTo (X, Y) Устанавливает новое положение указателя
OutText(Т) Выводит текст Т (кроме кириллицы), начиная с текущего положения указателя
OutTextXY (X, Y, Т) Выводит текст Т, начиная с позиции Xстроки Y
Circle (X, Y, R) Рисует окружность радиуса Rтипа Wordс центром в точке с координатами (X; Y)
Ваг (XI, Y1, Х2, Y2) Заполняет прямоугольную область экрана, заданную координатами диагонали
Bar3D (XI, Yl, X2, Y2, D, Top) Чертит трехмерное изображение параллелепипеда (D-глубина) и
закрашивает его переднюю грань; Тор - выражение типа Boolean, если Тор = True, верхняя грань
вычерчивается, если False- нет
Rectangle (XI, Yl, X2, Y2) Вычерчивает прямоугольник по координатам левого верхнего и правого нижнего
углов
Arc (X, Y, А, В, R) Чертит дугу окружности: X, Y- координаты центра, А, В - начальный и конечный углы
дуги(в градусах), отсчет углов ведется против часовой стрелки^ - радиус (в пикселах);
Ellipse (X, Y, А, В, RX, RY) Чертит эллипсную дугу: X, Y- координаты центра, А, В - начальный и
конечный углы дуги (в градусах), RX, RY- горизонтальный и вертикальный радиусы
Sector (X, Y, А, В, RX, RY) Рисует и штрихует сектор эллипса радиусами RXи RYс центром в точке X, Yот
угла А к углу В
SetFillStyle (Pattern, Color) Устанавливает образец штриховки и цвет
SetLineStyle (LineStile,Pattern,Thickness) Устанавливаеттолщинуистильлинии
SetTextStyle (Font, Direction,CharSize) Устанавливает текущий шрифт (0-9), направление (по горизонтали-
0/вертикали-1) и размер символов (0-13)
FillEllipse (X, Y, RX, RY) Рисует закрашенный эллипс
FloodFill (X, Y, С) Заполняет любую замкнутую фигуру, используя текущий стиль заполнения (узор и цвет),
X, Y- координаты точки внутри этой области, С - цвет границы
FillPoly (N, Coords) Обводит линией и закрашивает замкнутый многоугольник; N - количество вершин,
Coords- переменная типа PointType, содержащая координаты вершин (см. сноску под таблицей)
Getlmage (X1,Y1, X2,Y2, Bui) Помещает в буфер памяти Bufкопию прямоугольного фрагмента
изображения
Putlmage (X,Y, Buf, ModePut) Выводит в заданное место экрана (X,Y- координаты верхнего левого угла)
копию фрагмента изображения из буфера Buf, ModePut- способ копирования (в конце главы)
ImageSize (X1,Y1,X2,Y2) Возвращает размер памяти в байтах, необходимый для размещения
прямоугольного фрагмента изображения
GraphResultВозвращает 0, если последняя графическая операция выполнилась без ошибок
GraphErrorMsg (Code) Возвращает значение типа Stringс текстовым сообщением об ошибке; Code- код
ошибки
GetGraphModeВозвращает значение типа Integer, в котором содержится код текущего режима работы
графического адаптера
GetXВозвращает текущую координату указателя по горизонтали / вертикали (тип Integer)
GetY
GetMaxXВозвращает максимальную координату экрана по горизонтали / вертикали (тип Word) в текущем
режиме работы
|