Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_Информатика_2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
419.33 Кб
Скачать

2. Теоретические сведения

Модуль Graph представляет собой библиотеку из более чем 50 графических процедур и функций. В модуле поддерживаются несколько типов линий и стилей заполнения, существует несколько типов шрифтов, которые можно увеличивать, выравнивать и ориентировать вертикально или горизонтально. Для того чтобы выполнить программу, которая использует модуль Graph, необходимо иметь доступ к одному или более графических драйверов (файлы с расширением BGI), файлам TURBO.TPL, GRAPH.TPU и к файлам шрифтов с расширением CHR. Каждый драйвер содержит код и данные, хранящиеся в отдельном файле.

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

Процедура Close Graph выгружает драйвер из памяти и восстанавливает предыдущий видеорежим.

Рассмотрим используемую в графическом режиме координатную систему.

Верхний левый угол графического экрана определен как (0,0). Значение Х или колонки увеличиваются направо. Значение Y или строки увеличиваются вниз. Так в режиме 640x480 на адаптере CGA экранные координаты каждого из четырех углов и точка в центре экрана будут представлены:

Для вывода графической информации в заданную позицию в Turbo Pascal

используется текущий указатель (CP - Current Pointer). CP подобен курсору в

текстовом режиме, но в отличие от курсора CP не виден. Следующие процедуры

перемещают CP: InitGraph, MoveTo, MoveRel, LineTo, LineRel, OutText,

SetGraphMode, GraphDefaults, ClearDevice, SetViewPort, ClearViewPort.

Причем последние 5 команд перемещают CP в позицию (0,0).

Графический модуль Turbo Pascal позволяет использовать большое число

процедур для рисования различных геометрических фигур: точек, линий,

окружностей, дуг, эллипсов, прямоугольников, многоугольников и т.д. Все

графические процедуры и функции с кратким описанием приведены ниже.

Процедуры модуля Graph

Arc

Рисует дугу от начального угла к конечному, используя (X,Y) как центр

Bar

Рисует полосу, используя текущий стиль и цвет.

Bar3D

Рисует 3-х мерную полосу, используя текущий стиль и цвет.

Circle

Рисует окружность, используя (X,Y) как центр.

ClearDevice

Очищает экран и устанавливает текущий указатель (CP) в начало.

ClearViewPort

Очищает окно.

CloseGraph

Закрывает графическую систему.

DetectGraph

Проверяет аппаратуру и определяет какой графический драйвер и в каком режиме используется.

DrawPoly

Рисует многоугольник текущим цветом и типом линии.

Ellipse

Рисует эллиптическую дугу от начального угла к конечному, используя (X,Y) как центр.

FillEllipse

Рисует заполненный эллипс, используя (X,Y) как центр и XRadius и YRadius как горизонтальные и вертикальные оси.

FillPoly

Заполняет многоугольник, используя сканирование.

FloodFill

Заполняет ограниченную область, используя текущий шаблон и цвет заполнения.

GetArcCoords

Позволяет запросить координаты команды Arc.

GetAspectRatio

Возвращает разрешение экрана из которого может быть вычислен относительный аспект (Xasp/Yasp).

GetFillPattern

Возвращает шаблон заполнения, установленный последним вызовом SetFillPattern.

GetFillSettings

Позволяет запросить текущий шаблон и цвет, установленные SetFillStyle или SetFillPattern.

GetImage

Сохраняет битовый образ указанной части экрана в буфере.

GetLineSettings

Возвращает текущие стиль, шаблон и толщину линии, установленные SetLineStyle.

GetModeRange

Возвращает минимальный и максимальный графические режимы для данного драйвера.

GetPalette

Возвращает текущую палитру и ее размер.

GetTextSettings

Возвращает текущий шрифт, направление, размер и выравнивание текста, установленные SetTextStyle и SetTextJustify.

GetViewSettings

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

GraphDefaults

Устанавливает текущий указатель (CP) в начало и переустанавливает графическую систему.

InitGraph

Инициализирует графическую систему и устанавливает устройство в графический режим.

Line

Рисует линию от (X1,Y1) к (X2,Y2).

LineRel

Рисует линию от текущего указателя (CP) к точке, лежащей на заданном растоянии.

LineTo

Рисует линию от текущего указателя к (X,Y).

MoveRel

Передвигает текущий указатель (CP) на заданное расстояние от его текущей позиции.

MoveTo

Передвигает текущий указатель (CP) в (X,Y).

OutText

Выводит текст на экран от текущего указателя.

OutTextXY

Выводит текст на экран.

PieSlice

Рисует и заполняет сектор, используя (X,Y) как центр и рисуя от начального угла к конечному.

PutImage

Выводит битовый образ на экран.

PutPixel

Рисует точку (пиксел) в (X,Y).

Rectangle

Рисует прямоугольник, используя текущий цвет и тип линии.

RestoreCRTMode

Восстанавливает видеорежим, который был до инициализации графики.

Sector

Рисует и заполняет сектор эллипса.

SetActivePage

Устанавливает активную страницу для графического вывода.

SetAllPalette

Изменяет цвет палитры.

SetAspectRatio

Изменяет значение относительного аспекта.

SetBkColor

Устанавливает цвет фона.

SetColor

Устанавливает основной цвет, которым будет осуществляться рисование.

SetFillPattern

Выбирает шаблон заполнения, определенный пользователем.

SetFillStyle

Устанавливает шаблон заполнения и цвет.

SetGraphBufSize

Позволяет изменить размер буфера для функций заполнения.

SetGraphMode

Переводит систему в графический режим и очищает экран.

SetLineStyle

Устанавливает текущие толщину и стиль линии.

SetPalette

Изменяет один цвет палитры, указанный через ColorNum и Color.

SetRGBPallete

Позволяет модифицизовать палитру для IBM 8514 и VGA.

SetTextJustify

Устанавливает выравнивание текста, используемое OutText и OutTextXY.

SetTextStyle

Устанавливает текущий шрифт, стиль и размер текста.

SetUserCharSize

Позволяет изменить ширину и высоту символа для штрихового шрифта.

SetViewPort

Устанавливает текущее окно для графического вывода.

SetVisualPage

Устанавливает номер видимой графической страницы.

SetWriteMode

Устанавливает режим вывода (копирование или XOR) для линий, рисуемых с DrawPoly, Line, LineRel, LineTo, Rectangle.

Функции модуля Graph.

GetBkColor

Возвращает текущий фоновый цвет.

GetColor

Возвращает текущий цвет.

GetDefaultPalette

Возвращает аппаратную палитру в записи PaletteType.

GetDriverName

Вoзвращает строку с именем текущего драйвера.

GetGraphMode

Возвращает текущий графический режим.

SetMaxColor

Возвращает максимальный цвет, который можно задать в SetColor.

GetMaxMode

Возвращает номер максимального режима текущего загруженного драйвера.

GetMaxX

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

GetMaxY

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

GetModeName

Возвращает строку с именем указанного графического режима.

GetPaletteSize

Возвращает размер таблицы палитры.

GetPixel

Возвращает цвет точки в (X,Y).

GetX

Возвращает координату X текущей позиции (CP).

GetY

Возвращает координату Y текущей позиции (СР).

GraphErrorMsg

Возвращает строку сообщения об ошибке для заданного кода ErrorCode.

GraphResult

Возвращает код ошибки для последней графической операции.

ImageSize

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

InstallUserDriver

Устанавливает пользовательский драйвер устройства в BGI таблицу драйверов устройств.

InstallUserFont

Устанавливает новый шрифт, который не встроен в BGI систему.

RegisterBGIdriver

Регистрирует драйвер BGI для графической системы.

RegisterBGIfont

Регистрирует шрифт BGI для графической системы.

TextHeight

Возвращает высоту строки в пикселах.

TextWidth

Возвращает ширину строки в пикселах.

Рассмотрим пример программы:

program GraphText;

uses

Graph;

var

GraphDriver,

GraphMode,

ErrorCode : Integer;

begin

{Автоматическое определение драйвера}

GraphDriver :=Detect;

{Последний параметр InitGraph указывает путь к драйверам}

InitGraph(GraphDriver, GraphMode, 'C:\DRIVERS');

ErrorCode :=GraphResult;

if ErrorCode <> grOK then {ошибка }

begin

Writeln('Graphics error: ', GraphErrorMsg(ErrorCode));

Writeln('Program aborted...');

Halt(1);

end;

Rectangle(0, 0, GetMaxX, GetMaxY); {рисовать прямоугольник на весь экран}

OutTextXY(GetMaxX div 2, GetMaxY div 2,

'Borland Graphics interface (BGI)');

Readln;

CloseGraph;

end. {GraphTest}

Программа начинается с вызова InitGraph, который автоматически определяет тип адаптера и загружает соответствующий графический драйвер. ВНИМАНИЕ: на разных компьютерах этот путь различается, поэтому в программе пишите СВОЙ путь. Если графическое устройство не распознано или во время инициализации произошла ошибка, выдается сообщение об ошибке и программа завершается. Иначе, чертится прямоугольник по краю экрана и в центре экрана выводится текст.

3.ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Ознакомиться с теоретическими сведениями данной работы.

2. Ответить на контрольные вопросы.

3. Выполнить свой вариант задания (см. Приложение 1).

4.ОФОРМЛЕНИЕ ОТЧЕТА

Отчет о работе должен содержать номер, название и цель работы, ответы на контрольные вопросы, текст программы и результат выполнения программы.

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1) Что такое текущий указатель?

2) Какой вид имеет система координат в графическом режиме?

3) Следует ли указывать в директиве USES модуль GRAPH?

4) Какие действия производят процедуры InitGraph и CloseGraph?

5) Написать программу, которая в центре красного экрана пользователя рисует окружность, залитую желтым цветом.

6. ВАРИАНТЫ ЗАДАНИЙ

№ задания

1

2

3

4

5

6

7

8

9

10

№ по журналу

С помощью процедур и функций модуля GRAPH на экране изобразить декартовую систему координат (по осям расставить цифровые значения) и построить графики:

1) x=3t (1+t3), y=3t2 (1+t3) при -1<t 5;

2) x=t2/(1+t2), y=t3/(1+t2) при -10 t 10;

3) x=(t2-1)/(1+t2), y=t(t2-1)/(1+t2) при -10 t 10;

4) x=cos2 t+cost, y=cost sint+sint при 0 t<2 ;

5) x=cost (1+cost), y=sint (1+cost) при 0 t<2 ;

6) x=t-sint, y=1-cost при 0 t<2 ;

7) x=sint, y=t2-cost при 0 t<2 ;

8) x=t2*sint, y=t2-cost при - t. ;

9) x=sint, y=cost при - t ;

10) x=cos2t, y=sin2t при 0 t 2 .

Лабораторная работа N25.

СТРУКТУРА МОДУЛЕЙ И ОСОБЕННОСТИ РАБОТЫ С НИМИ.

1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

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