- •Лабораторная работа № 27-28 Работа с графикой в Pascal
- •Теоретическая часть
- •1.1.Вывод точек и линий
- •1.2.Вывод многоугольников
- •1.3.Вывод дуг, окружностей, эллипсов
- •1.4.Вывод текста
- •Варианты заданий
- •Графика в Турбо Паскале
- •InitGraph( gd, gm,’ указывается путь к драйверу, чем подробнее, тем лучше’);
- •Базовые процедуры и функции
- •Процедуры модуля Graph
- •Функции модуля Graph
- •Экран и окно в графическом режиме
- •Вывод простейших фигур Вывод точки
- •Цветовая шкала
- •Вывод линии
- •Построение прямоугольников
- •Построение многоугольников
- •Построение дуг и окружностей
- •Работа с текстом Вывод текста
- •Вывод численных значений
- •Выравнивание текста
- •Построение графиков функций
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Циклы в графике. Построение случайных процессов
- •Создание иллюзии движения
Лабораторная работа № 27-28 Работа с графикой в Pascal
Цель работы: овладение практическими приемами и навыками разработки программ по работе в графическом режиме. Закрепление основных функций и процедур, применяемых в этом режиме. Уяснить различия между текстовым и графическим режимами
ВНИМАНИЕ! Перед выполнением работы ознакомиться с теоретическим материалом в ПРИЛОЖЕНИИ.
Содержание отчета: название работы, краткие теоретические сведения о модуле Graph. Сведения о процедурах вывода геометрических фигур и вывода текста. Полный текст варианта вашего задания. Программа на языке Паскаль
Теоретическая часть
1.1.Вывод точек и линий
Для высвечивания точки используется процедура PutPixel(x,y:integer; Pixel:word);
x,y - координаты высвечиваемой точки;
Pixel - цвет высвечиваемой точки.
В Турбо-Паскале существует три процедуры построения отрезка прямой.
Процедура LineTo(x,y:integer); рисует отрезок прямой из текущей точки в заданную.
x,y - координаты заданной точки.
Процедура LineRel(Dx,Dy:integer); рисует отрезок прямой из текущей точки в точку, отстоящую на расстояние (Dx,Dy) от текущей.
Dx,Dy - задаваемые расстояния (вдоль оси X и оси Y соответственно) от текущей точки до заданной.
Процедура Line(x1,y1,x2,y2:integer); рисует отрезок прямой, соединяющий точку (x1,y1) с точкой (x2,y2).
x1,y1 - координаты первой точки;
x2,y2 - координаты второй точки.
Образец линии устанавливается процедурой
SetLineStyle(LineStyle:word;Pattern:word;Thickness:word);
Параметр LineStyle задает тип линии. Он может принимать одно из следующих значений, задаваемых константами:
SolidLn=0 - сплошная;
DottedLn=1 - точечная;
CenterLn=2 - штрих пунктирная;
DashedLn=3 - пунктирная;
UserBitLn=4 - тип линии определяется пользователем.
Параметр Pattern определяет тип линии, задаваемый пользователем. Этот параметр игнорируется, если LineStyle не равен UserBitLn. При задании типа линии пользователем используется 16 -битовый шаблон, определяемый параметром Pattern:
биты с нулевыми значениями не вызывают изменения отображения в данной точке, а биты со значениями 1 отображают точку.
Параметр Tickness определяет толщину линии, он может принимать два значения NormWidth=1 и TickWidth=3. В первом случае рисование производится линиями обычной толщины, во втором случае - утолщенными (в 3 раза).
При инициализации графического режима по умолчанию устанавливается сплошной тип линии обычной толщины.
Процедура DrawPoly(NumPoints:word; var PolyPoints); выводит ломаную линию в соответствии с текущим цветом и текущим образцом линии.
NumPoints - число вершин ломаной;
PolyPoints - массив координат ломаной, элементами массива являются записи типа PointType.
type PointType=record
x,y:integer; {координаты вершин ломаной}
end;
Число элементов массива должно быть не меньше NumPoints. Ломаную можно построить также, последовательно рисуя отрезки - звенья ломаной.
1.2.Вывод многоугольников
Процедура Rectangle(x1,y1,x2,y2:integer); рисует прямоугольник, концы диагонали которого имеют координаты (x1,y1) и (x2,y2) соответственно. Рисование производится текущим цветом и в соответствии с текущим образцом линий.
Процедура Bar(x1,y1,x2,y2:integer); штрихует прямоугольник (не очерчивая его границы) в соответствии с текущим образцом и цветом штриховки.
x1,y1 - координаты одного конца диагонали прямоугольника;
x2,y2 - координаты другого конца диагонали прямоугольника.
Нарисовать закрашенный прямоугольник можно и по-другому: сначала нарисовать прямоугольник процедурой Rectangle, а затем закрасить его с помощью процедуры FloodFill.
Процедура FloodFill(x,y:integer;Border:word); закрашивает ограниченную область, внутри которой находится точка с координатами (x,y). Закраска производится в соответствии с текущим цветом и образцом.
Если заданная точка находится внутри области, то область закрашивается; если точка находится вне области, то закрашивается внешняя часть области. Параметр Border задает цвет границы области. Точки внутри области закраски, цвет которых отличается от цвета, заданного в параметре Border, закрашиваются.
Произвольный многоугольник выводится процедурой
FillPoly (NumPoints:word;var PolyPoints);
NumPoints - число вершин многоугольника;
PolyPoints - массив координат вершин многоугольника, элементами массива являются записи типа PointType; число элементов массива должно быть не менее NumPoints.
Закраска осуществляется текущим цветом и в соответствии с текущим образцом.
Цвет и образец закраски устанавливается процедурой
SetFillStyle(Pattern:word; Color:word);
Pattern - параметр, устанавливающий образец закраски;
Color - параметр, устанавливающий цвет закраски.
Виды закраски определяется константами.
Например: SolidFill=1 - сплошная заливка;
HatchFill=7 - редкой штриховкой;
Возможные цвета и соответствующие им константы выбираются из справочной таблицы. По умолчанию выбирается закраска, заполняющая всю область сплошным цветом, а в качестве цвета - максимальный цвет, содержащийся в заданной палитре. Если параметр Pattern имеет значение UserFill, то образец закраски должен быть предварительно установлен процедурой SetFillPattern.
Процедура SetFillPattern(Pattern:FillPatternType; Color:word);
устанавливает образец и цвет закраски.
Параметр Pattern задает битовый шаблон образца закраски. Тип FillPatternType определен следующим образом:
type FillPatternType=array[1..8] of byte;
Образец закраски формируется в соответствии с байтовыми значениями, содержащимися в массиве Pattern. Массив шаблона состоит из 8-ми элементов - 8-ми байтов, причем каждый байт соответствует 8-ми точкам строки экрана. Таким образом, создается образец закраски для прямоугольника размером 8*8 точек, который при закраске повторяется. Если бит в байте шаблона равен 1, то соответствующая точка растра будет высвечена на экране. Образцы, определяемые пользователем, позволяют создавать закраски, отличающиеся от предварительно определенных.
Пример формирования шаблона для образца закраски:
Двоичное значение Шестнадцатеричное значение
11001100 = $CC (1-ый байт)
00110011 = $33 (2-ой байт)
11001100 = $CC (3-ий байт)
00110011 = $33 (4-ый байт)
00110011 = $33 (5-ый байт)
11001100 = $CC (6-ой байт)
00110011 = $33 (7-ой байт)
11001100 = $CC (8-ой байт)
Параметр Color определяет цвет закраски.