Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
выш.мат. методичка.DOC
Скачиваний:
32
Добавлен:
13.02.2015
Размер:
1.71 Mб
Скачать

14.4. Модуль Graph

Модуль Graph содержит типы, константы, переменные и подпрограммы, позволяющие программисту создавать изображения с использованием широкого ни бора графических адаптеров (СGА, МСGА, ЕGА, VGА, Неrcules, АТ&Т400, 3270РС, IВМ8514).

При работе с этими адаптерами весь экран разбивается на отдельные "точ­ки" - пиксели, которые можно закрасить в тот или иной цвет. Каждый пиксель имеет две координаты: Х и У. Координата Х увеличивается по горизонтали елец направо, начиная от нуля, координата Y увеличивается по вертикали сверху вниз, также начиная от нуля. Таким образом, левый верхний пиксель имеет ко­ординаты (0,0). Количество пикселей зависит от типа адаптера и режима его ра­боты (см. табл. 17).

Для формирования изображений выделяется одна или несколько (до четырех) страниц видеопамяти. В каждый момент времени лишь одна из них является ви­димой, передающей изображение на экран дисплея, и одна является активной, на ней можно формировать изображение. Видимая и активная страницы могут совпадать и не совпадать, так что можно, например, сначала подготовить изобра­жение на какой-либо странице, а затем вывести его на экран.

Так же как и в текстовом режиме при использовании модуля СП, модуль Graph позволяет выделять окна на экране дисплея. Графические процедуры и функции в этом случае используют координаты в пределах окна, причем левый верхний угол окна получает координаты (0,0).

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

Стандартные типы, используемые в модуле, позволяют компактно представить информацию, необходимую для графических изображений. Эти типы приведены в табл. 16.

Таблица 16. Стандартные типы модуля Grарh

Имя Определение

Цвета палитры

РаlеttеТуреrесоrd

Size: Вуtе; {Количество цветов}

Со1оrs: аrrау[0..МахСоlors] оfShortint{используемые цвета}

еnd;

Характеристики линии

LineSettingTуреrecord

LineStylе: Word; {тип линии}

Раttеrn: Word; {шаблон линии}

Тhickness: Word {толщина линии}

еnd;

Характеристики текста

ТехtSettingTуреrecord

Font: Word; {тип шрифта}

Direction: Wоrd; {направление текста}

СharSize: Wоrd; {размер символов}

Ноriz:Word; {гориз. выравнивание}

Vert:Wоrd{вертик. выравнивание}

еnd,

Орнамент и цвет заполнения

FillSettingTyре record

Раttern: Word; {шаблон}

Со1ог: Word {цвет заполнения}

end;

Задаваемый пользователем орнамент заполнения

FillPatternTyре аrrау[1..8] оfВуtе;

Координаты точки

РоintТуре record

Х,У: Integer

end;

Окно вывода графической информации

ViewPortTyperecord

Х1,У1,Х2,У2: Integer; {координаты окна}

Сliр: Вооlеаn{признак усечения}

end;

Данные о дуге

АrcСооrdsТуре record .

Х,У: Integer; {центр дуги}

Хstart, Уstart: Integer; {начало дуги}

Хend, Уеnd: Integer {конец дуги}

end;

Тип РаletteТуре содержит количество цветов (Size) и сами цвета (Соlors).

Тип LineSettingTуре содержит тип линии (см. табл. 23), шаблон (задается пользователем, если выбран тип линии UserBitLn, - см. процедуру (SetLineStyle) и толщину линии (см. табл. 24).

Тип ТехtSettingТуре содержит тип шрифта (стандартные шрифты см. в табл. 29), направление размещения текста (по горизонтали или вертикали - см. там же), размер символов, а также выравнивание по горизонтали и вертикали (см. табл. 30).

Тип FillSettingТуре содержит код орнамента заполнения фигур (см. табл. 27) и цвет заполнения.

Тип LinePatternTуре содержит кодировку задаваемого пользователем орнамента заполнения. Величина такого типа содержит информацию о заполнении участка экрана 8х8 пикселей (каждому пикселю отводится один бит информации). Если соответствующий бит содержит 1, пиксель закрашивается в цвет заполнения, в противном случае - в цвет фона.

Тип РоintТурe содержит координаты точки экрана, отсчитываемые в пикселях, причем самая левая или верхняя координата имеет значение 0.

Тип ViewРоrtТуре содержит параметры окна экрана {координаты левого верх­него и правого нижнего углов, признак усекания изображаемых фигур - если он равен Тruе, отсекаются участки фигур, не помещающиеся в текущем окне).

Тип АrсСооrdsТуре содержит параметры дуги (центр дуги, начальную и коне­чную точки, лежащие на дуге).

Список констант модули, определяющих графический режим, см. в табл. 17

Таблица 17. Константы графических режимов модуля Grарh

Имя

Значение

Размер поля

Палитра

Число страниц

АТТ400С0

0

320х200

C0

1

АТТ400С1

1

320х200

С1

1

АТТ400С2

2

320х200

С2

1

АТТ400С3

3

320х200

СЗ

1

АТТ400Меd

4

640х200

2 цвета

1

АТТ400Hi

5

640х400

2 цвета

1

CGАC0

0

320х200

С0

1

CGАС1

1

320х200

С1

1

CGАС2

2

320х200

С2

1

CGАСЗ

3

320х200

СЗ

1

CGАНi

4

640х200

2 цвета

1

ЕGАLо

0

640х200

16 цветов

4

ЕGАНi

1

640х350

16 цветов

2

ЕGА64Lo

0

640х200

16 цветов

1

ЕGА64Нi

1

640х350

4 цвета

1

ЕGАМопо

0

640х350

2 цвета

1 или 2

НеrсМоnоНi

0

720х348

2 цвета

2

IВМ8514Lo

0

640х480

256 цветов

IBМ8514Hi

0

1024х768

256 цветов

МCGАС0

0

320х200

С0

1

МCGАС1

1

320х200

С1

1

МCGАС2

2

320х200

С2

1

МCGАСЗ

3

320х200

С3

1

МCGАМеd

4

640х200

2 цвета

1

МCGАHi

5

640х480

2 цвета

1

РС3270Hi

0

720х350

2 цвета

1

VGАLо

0

640х200

16 цветов

4

VGАМed

1

640х350

16 цветов

2

VGАНi

2

640х480

16 цветов

1

В этой таблице палитра С0 включает цвета: светло-зеленый розовый и желтый палитра С1 цвета светло-голубой, светло-фиолетовый и белый, палитра С2 - цвета зеленый, красный и коричневый, палитра С3 - голубой, фиолетовый й светло-серый. Остальные константы модуля приведены в таб.18-30.

Таблица 18. Коды драйверов графических устройств

Имя

Значение

Назначение

Detect

0

Автоматический выбор драйвера

СGА

1

Назначение совпадает с именем графического адаптера

МСGА

2

-“-

ЕGА

3

-“-

ЕGА64

4

-“-

EGАМоnо

5

-“-

IВМ8514

6

-“-

НеrсМоnо

7

-“-

АТТ400

8

-“-

VGА

9

-“-

РС3270

10

-“-

СurrentDriver

-128

Текущий драйвер

Таблица 19. Коды, ошибок, возвращаемые функцией GraphResult

Имя

Значение

Назначение

grOK

0

Успешное выполнение

grNoInitGraph

-1

Не установлен графический режим

grNotDetected

-2

Графический режим не предусмотрен

grFileNotFound

-3

Нет драйвера устройства

grInvalidDriver

-4

Ошибка в драйвере

grNoLoadMem

-5

Нет памяти для загрузки драйвера

grNoScanMem

-6

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

grNoFloodMem

-7

Нет памяти для закраски

grFontNotFound

-8

Не найден файл со шрифтом

grNoFontMem

-9

Нет памяти для загрузки шрифта

grInvalidMode

-10

Недопустимый режим для выбранного драйвера

grError

-11

Ошибка графической системы

grIOerror

-12

Ошибка ввода-вывода графической системы

grInvalidFont

-13

Ошибка в файле со шрифтом

grInvalidFontNum

-14

Неверный номер шрифта

Таблица 20. Коды цветов (для процедур SetPaltteиSetAllPallette)

Имя

Зна-

чение

Назначение

Имя

Зна-

Чение

Назначение

Вlаск

0

Черный

DarkGraу

8

Темно-серый

Вluе

1

Синий

LightВlue

9

Светло-синий

Grееn

2

Зеленый

LightGrееn

10

Светло-зеленый

Суаn

3

Голубой

LightCyan

11

Светло-голубой

Red

4

Красный

LightRed

12

Розовый

Маgenta

5

Фиолетовый

LightMagenta

13

Светло-фиолетовый

Вrоwn

6

Коричневый

Yellow

14

Желтый

LightGray

7

Светло-серый

White

15

Белый

Таблица 21. Коды цветов (для процедуры RGBPalette)

Имя

Значение

Назначение

ЕGАВlасk

0

Черный

ЕGАВluе

1

Синий

ЕGАGrееn

2

Зеленый

EGАСуаn

3

Голубой

ЕGАRed

4

Красный

ЕGАМаgenta

5

Фиолетовый

ЕGАВrоwn

20

Коричневый

ЕGАLightGrау

7

Светло-серый

ЕGАDarkGrау

56

Темно-серый

ЕGАLightВlue

57

Светло-синий

ЕGАLightgrееn

58

Светло-зеленый

ЕGАLightСуаn

59

Светло-голубой

EGАLightRed

60

Розовый

ЕGАLightMagenta

61

Светло-фиолетовый

ЕGАYellow

62

Желтый

ЕGАWhite

63

Белый

Таблица 22. Максимальное количество цветов в палитре. MaxColors=15;

Таблица 23. Коды типов линий для процедур GetLineStyle,SetLineStyleиGetLineSetting

Имя

Значение

Назначение

SolidLn

0

Сплошная

DottedLn

1

Пунктирная

CenterLn

2

Штрихпунктирная

DashedLn

3

Штриховая

UserBitLn

4

Заданная пользователем

Таблица 24. Толщины линий для процедур GetLineStyle,SetLineStyleиGetLineSetting

Имя

Значение

Назначение

NormWidth

1

Нормальная

TickWidth

3

Толстая

Таблица 25. .Управление отсечением фигур для процедуры SetViewPort

Имя

Значение

Назначение

ClipOn

True

Отсекаются не помещающиеся в окне части фигур

ClipOff

False

Не отсекаются не помещающиеся в окне части фигур

Таблица 26. Константы изображения параллелепипеда для процедуры Ваr3D

Имя

Значение

Назначение

TopOn

True

Закрашивается верхняя грань

TopOff

False

Не закрашивается верхняя грань

Таблица 27. Константы орнамента заполнения для процедур GetFillStyleиSetFillStyle

Имя

Значение

Назначение

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

Заполнение определяется пользователем

Таблица 28. Константы битовых операций для процедур РиtImageиSetWriteMode

Имя

Значение

Назначение

CopyPut

0

MOV

XORPut

1

XOR

OrPut

2

OR только для PutImage

AndPut

3

только для PutImage

NotPut

4

только для PutImage

Константы битовых операций для процедур PutImage и SetWriteMode означа­ют, каким образом передается графическая информация из буфера на внешнее устройство. Информация передается отдельными байтами аналогично выполне­нию соответствующих команд ассемблера.

Таблица 29. Характеристики шрифтов для процедур SetTextSty1е и GetТехtStуlе

Имя

Значение

Назначение

DefaultFont

0

Коды шрифтов

TriplexFont

1

SmallFont

2

SansSerifFont

3

GothicFont

4

et.c.

5-8

HorizDir

0

Горизонтальное расположение строк

VertDir

1

Вертикальное расположение строк

UserCharSize

0

Размер шрифта задается пользователем

Таблица 30. Константы выравнивания текста для процедуры SetТехtJustify

Имя

Значение

Назначение

LeftText

0

Левое выравнивание

CenterText

1

Выравнивание по центру

RightText

2

Правое выравнивание

BottomText

0

Нижнее выравнивание

TopText

2

Верхнее выравнивание

Таблица 31. Переменные модуля Grарh (указатели на динамически распределяемую память)

Имя

Значение

Назначение

GraphGetMemPtr

Pointer

Выделяемая область

CenterText

Pointer

Освобождаемая область

Таблица 32. Процедуры и. функции

Имя

Назначение

Процедуры управления графическим режимом

CloseGraph

Прекращение работы графического режима

DetectGraph

Проверка оборудования и режима

GetModeRange

Получение минимального и максимального номера графического режима

GraphDefaults

Сброс параметров графического режима

InitGraph

Инициализация графического режима

RestoreCrtMode

Возвращение в текстовый режим

SetGraphBufSize

Изменение размера графического буфера

SetGraphMode

Вход в графический режим и очистка экрана

Функции управления графическим режимом

GetGraphMode

Получение номера текущего графического режима

GetMaxMode

Максимальное число режимов текущего драйвера

GetModeName

Получение имени заданного графического режима

GraphErrorMsg

Формирование сообщения об ошибке

GraphResult

Получение кода ошибки

GetDriveName

Получение имени текущего драйвера

InstallUserDriver

Размещение драйвера в таблице

InstallUserFont

Установка нового шрифта

RegisterBGIdriver

Регистрация драйвера

RegisterBGIfont

Регистрация шрифта

Процедуры управления экраном, окном, страницей

ClearDevice

Очистка графического экрана

ClearViewPort

Очистка графического окна

GetAspectRatio

Получение относительного масштаба изображения по горизонтали и вертикали

GetViewSetting

Получение параметров текущего графического окна

SetActivePage

Задание активной страницы

SetAspectRatio

Изменение относительного масштаба изображения по горизонтали и вертикали

SetViewPort

Задание размеров окна

SetVisualPage

Задание отображаемой на экране страницы

Процедуры управления цветом и палитрой

GetDefaultPalette

Получение исходных параметров палитры

GetPalette

Получение параметров палитры

SetAllPalette

Задание всех цветов палитры

SetBkColor

Задание цвета фона экрана

SetColor

Задание текущего цвета

SetPalette

Задание одного цвета палитры

SetRGBPalette

Задание палитры для адаптеров IВМ-8514 и VGА

Функции управления цветом и палитрой

GetBkColor

Получение цвета фона

GetColor

Получение текущего цвета

GetMaxColor

Получение максимального кода цвета

GetPaletteSize

Получение количества цветов в палитре

Функции работы с точками

GetMaxX

Получение максимального значения координаты Х

GetMaxY

Получение максимального значения координаты У

GetPixel

Получение цвета пикселя активной страницы

GetX

Получение координаты Х текущей позиции на экране

GetY

Получение координаты Y текущей позиции на экране

Процедуры работы с точками

PutPixel

Помещение пикселя в активную страницу

Процедуры работы с линиями

GetLineSettings

Получение параметров линии

Line

Построение линии от одной точки до другой

LineRel

Построение линии с относительными координатами

LineTo

Построение линии с абсолютными координатами

MoveRel

Перемещение указателя в точку с относительными координатами

MoveTo

Перемещение указателя в точку с абсолютными координатами

SetLineStyle

Задание характеристик линии

SetWriteMode

Задание способа построения линии

Процедуры построения фигур из линий

Bar

Построение закрашенного прямоугольника

Bar3D

Построение закрашенного параллелепипеда

DrawPoly

Построение многоугольника

FillPoly

Построение закрашенного многоугольника

FloodFill

Заполнение области текущим орнаментом

GetFillPattern

Получение орнамента заполнения фигур

GetFillSettings

Получение параметров заполнения фигур

Rectangle

Построение прямоугольника

SetFillPattern

Задание произвольных параметров заполнения фигур

SetFillStyle

Задание стандартных параметров заполнения фигур

Процедуры построения криволинейных фигур

Arc

Построение дуги окружности

Circle

Построение окружности

Ellipse

Построение дуги эллипса

FillEllipse

Построение закрашенного эллипса

GetArcCoords

Получение координат последней дуги

PieSlice

Построение закрашенного сектора круга

Sector

Построение закрашенного сектора эллипса

Процедуры роботы с текстом

GetTextSetting

Получение характеристик текста

OutText

Вывод последовательности символов

OutTextXY

Вывод последовательности символов, начиная с заданных координат

SetTextJustify

Задание способа, выравнивания текста

SetTextStyle

Задание типа, начертания шрифта и коэффициента, увеличения символов

SetUserCharSize

Задание высоты и ширины символов

Функции работы с текстом

TextHeight

Получение высоты строки в пикселях

TextWidth

Ширина строки в пикселях

Процедуры обмена с памятью

GetImage

Сохранение изображения в буфере

PutImage

Вывод изображения из буфера на экран

Функции обмена с памятью

ImageSize

Получение размера требуемой для изображения памяти