ОСНОВНЫЕ ВОЗМОЖНОСТИ МОДУЛЯ GRAPH




 

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

Целью работы является изучение основ работы с графическими процедурами и функциями языка Turbo Pascal.

 

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. Выполнить свой вариант задания.

 

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

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

 

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

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

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

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

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

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

 

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

№ задания                    
№ по журналу                    
                   
                   

 

С помощью процедур и функций модуля 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 .

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: