47673 (Модуль Graph в программе Turbo Pascal)

2016-07-31СтудИзба

Описание файла

Документ из архива "Модуль Graph в программе Turbo Pascal", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "47673"

Текст из документа "47673"

Модуль Graph

Модуль Graph представляет собой библиотеку подпрограмм, обеспечивающую полное управление графическими режимами различных адаптеров дисплеев: CGA, EGA, VGA и т.д. Библиотека содержит более пятидесяти графических процедур и функций, как базовых (рисование точек, линий, окружностей и т.п.), так и расширяющих возможности базовых (многоугольники, заполнение фигур, вывод текста и др.).

Чтобы запустить программу, использующую процедуры модуля Graph , необходимо, чтобы в рабочем каталоге находились соответстственно графические драйверы (файлы с расширением .BGI), а если программа использует еще и штриховые шрифты, то необходимо, чтобы там же находились файлы шрифтов (с расширением .CHR).

Кроме того, системе программирования (компилятору) должен быть доступен модуль GRAPH.TPU (он не входит в состав файла TURBO.TPL, а изначально находится в архиве BGI.ARC).

Файлы BGI и содержимое модуля Graph

Файл BGI - это графический интерфейс (Borland Graphic Interface) фирмы Borland. Он обеспечивает взаимодействие программ с графическими устройствами. Перед работой программы в графических режимах дисплея процедура InitGraph определяет тип адаптера, представленного в ПК, и загружает в память соответствующий BGI-драйвер, в котором определены возможные режимы работы.

Процедура CloseGraph выгружает графический драйвер из памяти и восстанавливает текстовый режим работы видеоадаптера. В описываемом модуле присутствуют также процедуры, позволяющие выходить из графического режима без выгрузки драйвера (RestoreCRTMode) и возвращаться обратно (SetGraphMode).

Итак, в рабочем каталоге могут находиться следующие файлы:

CGA.BGI

- драйвер для IBM CGA, MCGA;

EGAVGA.BGI

- драйвер для IBM EGA, VGA;

HERC.BGI

- драйвер для Hercules;

ATT.BGI

- драйвер для АТ&Т6300 (400 строк);

PC3270.BGI

- драйвер для IBM 3270PC;

IBM8514.BGI

- драйвер для IBM 8514.

Такой набор файлов необходим при составлении программ, которые будут работать практически на всех ПК, совместимых с ПК фирмы IBM. Если же такая задача не стоит, то достаточно иметь один файл, соответствующий представленному в используемом ПК графическому адаптеру.

Все процедуры и функции модуля Graph можно разбить на функциональные группы:

  1. Управление графическими режимами и их анализ (DetectGraph, InitGraph, CloseGraph, GraphDefaults, ClearDevice, InstallUserDriver, RegisterBGIDriver, RestoreCRTMode, SetGraphMode, SetWrifeMode, GetGraphMode, GetModeRange, GetMaxMode, GetModeName, GetDriverName, GraphResuIt,, GraphErrorMsg).

  2. Рисование графических примитивов и фигур:

    1. управление «текущим указателем» (MoveTo, MoveRel, GetMaxX, GetMaxY, GetX, GetY);

    2. собственно рисование (Line, LineTo, LineRel, Arc, GetArcCoords, Circle, Sector, Ellipse, Rectangle, DrawPoly);

    3. стиль линий и коэффициент сжатия изображения (SetLineStyle, GetLineSettings, SetAspeclRatio, GetAspectRatio).

  3. Управление цветами и шаблонами заполнения (SetColor, GetColor, SetBkColor, GetBkColor, GetMaxColor, GetPalette, GetPaletteSize, GetDefaultPalette, SetPalette, SetAllPalette, SetRGBPalette, SetFillStyle, SetFillPattern, GetFillPattern, GetFillSettings, SetGraphBufSize, FillPoly, FillEIIipse, FloodFill, PicSlice, Bar, Bar3D).

  4. Битовые операции (PutPixel, GetPixel, ImageSize, Getlmage, Putlmage).

  5. Управление страницами (SetActivePage, SetVisualPage).

  6. Графические окна (вьюпорты) (SetViewPort, GetViewSettings, ClearViewPort).

  7. Управление выводом текста (RegisterBGIFont, lnstallUserFont, OutText, OutTextXY, SetTextStyle, SetTextJustify, SetUserCharSize, GetTextSettings, GetTextHeight, TextWidth).

Управление графическими режимами. Инициализация и закрытие графического режима

Процедура инициализации InitGraph. Простейшая программа, использующая графику, обязательно должна содержать блок вызова процедур инициализации графического режима и обращение к процедуре его закрытия. Такой блок инициализирует режим, проверяет правильность переключения и, если все операции прошли успешно, допускает дальнейшую работу программы. Процедура инициализации объявлена следующим образом:

InitGraph (VAR GraphDriver; {тип адаптера}

VAR GraphMode Integer; {режим графики}

DriverPath: String); {путь к драйверу}

В модуле Graph определены константы для задания вида адаптера параметром GraphDriver перед вызовом InitGraph(последняя константа введена для вызова процедуры GetModeRange уже после инициализации).

Detect

= 0;

{ автоопределение}

CGA

= 1;

{адаптер CGA}

HCGA

= 2;

{адаптер MCGA}

EGA

= 3;

{ адаптер EGA 256K}

EGA64

= 4;

{ адаптер EGA 64K}

EGAMono

= 5;

{ EGA с моно - дисплеем}

IBM8514

= 6;

{ адаптер 8514}

НегсМопо

= 7;

{ адаптер Hercules}

АTT400

= 8;

{ для ПЭВМ AT&T}

VGA

= 9;

{ адаптер VGA}

РС3270

= 10;

{ адаптер 3270}

CurrentDriver

=-128;

{ для GetModeRange}

Если параметру GraphDriver присвоить значение константы Detect система включится в режим автоопределсиия. Если возможно переключение системы в графический режим, то инициализируется соответствующий BGI-драйвер и включается режим с максимальным разрешением. В параметрах GraphDriver и GraphMode при этом будут возвращены автоматически выбранные значения или код ошибки.

Такая установка параметров процедуры рекомендуется в тех случаях, когда программа должна работать на разных ПК с различными видеоадаптерами. Однако этот метод предполагает наличие в памяти ПК или на диске одновременно всех драйверов. Если программа большая, то наличие всех драйверов в памяти может вызвать затруднения.

Если же параметр GraphDriver содержит номер конкретного адаптера, то и второй параметр, GraphMode, должен иметь значение (номер) режима, допустимого при этом адаптере.

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

Параметр DriverPath указывает путь в каталог, содержащий файлы с необходимыми драйверами. Если в него передается значение " (пустая строка), то драйверы должны находиться в текущем каталоге. Это же значение должно передаваться DriverPath, если необходимые BGI-файлы преобразованы при помощи утилиты BINOBJ в файлы типа .OBJ, а затем скомпонованы с программой в ЕХЕ-файл.

Процедура CloseGraph. Для окончательного завершения работы в графическом режиме необходимо всегда производить вызов процедуры CloseGraph. Эта процедура не имеет параметров. Она очищает экран, переводит адаптер в текстовый режим и, если возможно, выгружает из памяти все BGI-драйверы и штриховые шрифты. Последующий возврат в графические режимы возможен только через повторную инициализацию.

Обработка ошибок инициализации

Процедура InitGraph возвращает также и результат своей работы в параметре GraphDriver. В случае ошибки он может принимать значения, приведенные в таблице.

Значение

Объяснение

-2

Нет графического адаптера

-3

Не найден файл драйвера

-4

Ошибка в драйвере (в его коде)

-5

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

-10

Невозможный режим для выбранного драйвера

-15

Нет такого драйвера

Если же ошибок при инициализации не обнаружено, то в параметре GraphDriver возвращается номер адаптера из приведенного выше списка констант.

В модуле Graph реализован еще один способ проверки результата проведения графической операции. Он осуществляется с помощью функции

GraphResult: Integer

Эта функция возвращает код результата последнего вызова одной из процедур или функций, указанных в таблице.

Bar

Bar3D

ClearViewPort CloseGraph DetectGraph

DrawPoly FillPoly

FloodFill GetGraphMode

ImageSize InitGraph

InstallUserDriver InstallUserFont PieStice RegisterBGIdriver RegisterBGIfont SetAllPalette

SetFillPattern SetFillStyle SetGraphBufSize SetGraphMode SetLineStyle SetPalette SetText

Justify SetTextStyle

Таблица кодов, возвращаемых GraphResult, и расшифровка их содержания приведена при описании функции GraphErrorMsg, т.к. обычно эти функции используются совместно. После одного вызова GraphResult следующий ее вызов даст нулевое значение, поэтому для дальнейшего использования результатов тестирования рекомендуется сохранять значение этой функции в какой- либо переменной.

Для быстрой выдачи простого сообщения о типе ошибки графической системы используется функция, преобразующая результат вызова функции GraphResult в сообщение, которое можно вывести процедурой Write. Эта функция объявлена как:

GraphErrorMsg (ErrorCode: Integer): String;

Константы кодов ошибок, определенные в модуле Graph,и соответствующие им сообщения приведены в следующей таблице.

Константа

Код

Сообщение об ошибке

Перевод и пояснение

grOk

0

No error

Ошибки нет

grNoInitGraph

-1

(BGI) Graphics not installed (use InitGraph)

Графика не инициализирована

grNotDetected

-2

Graphics hardware not detcted

Графический адаптер не найден

grFileNotFound

-3

Device driver file not detected

BGI -файла нет в указанном каталоге

grlnvalidDriver

-4

Invali device driver file

BGI-файл содержит ошибочный код

grNoLoadMem

-5

Not enough memory to load driver

Нет места в ОЗУ для загрузки драйвера

grNoScanMem

-6

Out of memory in scan fill

При работе процедуры FillPoly не хватает рабочей памяти

grNoFloodMem

-7

Out of memory in flood fill

При работе процедуры FloodFill не хватает рабочей памяти

grFontNotFound

-8

Font file not found

CHR -файла нет в указанном каталоге

grNoFontMem

-9

Not enough memory to load font

Нет места в ОЗУ для загрузки шрифта

grlnvalidMode

-10

Invalid Graphics mode for selected driver

Невозможный режим для выбранного драйвера

grError

-11

Graphics error

Ошибка графики

grIOError

-12

Graphics I/O error

Ошибка ввода-вывода графики

grInvalidFont

-13

Invalid font fite

В файле шрифта неправильный код

grInvalidFontNum

-14

Invalid font number

Несуществующий номер шрифта

grInvalidDeviceNum

-15

Invalid device number

Несуществующий номер адаптера

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

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее