- •Московский государственный технический университет
- •Содержание.
- •Предисловие
- •Лабораторная работа №1 Процедурные типы
- •1. Теоретические сведения
- •Var X: real; I: integer;
- •X, y : byte;
- •VarFunc : FuncType;
- •I : integer;
- •2.Задачи для самостоятельного решения
- •Лабораторная работа №2 Модули
- •Теоретическая часть
- •Структура модулей
- •Связь модулей друг с другом
- •ISwap(a,b);
- •Var I, y :integer;
- •2.2. Практическая часть
- •Interface
- •Implementation
- •I: Integer;
- •3. Задачи, для самостоятельного решения
- •Лабораторная работа №3 Меню
- •1. Теоретическая часть
- •Var X,y,I: byte;
- •XUpLeft;
- •Var npos,I: integer;
- •Case npos of
- •Лабораторная работа №4.
- •2.Задачи, для самостоятельного решения:
- •Лабораторная работа № 5 Указатели. Связанные списки
- •1. Теоретические сведения
- •1.1. Указатели
- •1.2. Связные списки записей
- •1.3. Управление связанным списком записей (на примере)
- •1.3.1. Построение списка
- •Var ListOfChecks, CurrentCheck: pCheck;
- •1.3.2. Перемещение по списку
- •Var p: Pint;
- •2. Демонстрационные примеры
- •X1,y1,x2,y2: word;
- •Var npos,I,n,j :integer;
- •3: Begin
- •Interface
- •Задачи 1..4. Создать типизированный файл записей, содержащих сведения о багаже пассажира. Структура записи имеет следующий вид:
- •Var rec, beg, endd, current: pnt;
- •Задача 5. Создать типизированный файл записей, содержащих сведения об автомобиле. Структура записи имеет следующий вид:
- •Var rec, beg, endd, current : pnt;
- •Задача 22. Создать типизированный файл записей, содержащих сведения о книгах. Структура записи имеет следующий вид:
- •1.2.Объект и инкапсуляция
- •1.3. Иерархия объектов и наследование
- •Visible: Boolean;
- •Init(x1,y1);
- •Interface
- •Interface
- •X,y : Integer;
- •Visible : Boolean;
- •Implementation
- •Var Temp : Word;
- •Var Temp : Word;
- •Var gm,gd:Integer;
- •Xp:Point;
- •Xs:Square;
- •Xps:PaintSquare;
- •InitGraph(Gd,Gm,'');
- •2. Демонстрационные примеры
- •X,y:integer;
- •Inherited init(ax,ay);
- •Задача 12. Простые объекты.
- •Задача 14. Простые объекты.
- •Задача 15. Простые объекты.
- •Задача 20. Простые объекты.
- •Задача 21. Простые объекты.
- •Задача 22. Простые объекты.
- •Задача 23. Простые объекты.
- •Задача 25. Простые объекты.
- •Лабораторная работа №8 Статические объекты
- •Теоретическая часть
- •1.1.Вывод точек и линий
- •1.2.Вывод многоугольников
- •Виды закраски определяется константами.
- •1.3.Вывод дуг, окружностей, эллипсов
- •1.4.Вывод текста
- •Демонстрационные примеры
- •Лабораторная работа №9
- •2. Задачи, для самостоятельного решения
- •Лабораторная работа №10
- •1.2. Перенос изображения
- •1.3. Масштабирование изображения
- •1.4. Масштабирование рисунка
- •1.5. Поворот изображения
- •1.5.1.Поворот точки
- •1.5.2. Поворот рисунка
- •1.6. Композиция преобразований
- •2. Демонстрационные примеры
- •X,y:integer;
- •1: CloseGraph;
- •3.Задачи, для самостоятельного решения
- •Лабораторная работа №12 Рубежный контроль №2
- •Задачи, для самостоятельного решения
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 определяет цвет закраски.