- •Е.А. Ледников, а.В. Емельянов Информационные технологии
- •Часть 2
- •150301 – «Машиностроение»
- •Лабораторная работа 10 «Символьные переменные. Тип данных "char"»
- •Лабораторная работа 11 «Подпрограммы»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 12 «Сложные типы данных. Записи»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 13 «Файлы»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 14 «Текстовые файлы»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 15 «Графические возможности. Графический режим. Система координат»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 16 «Графические возможности. Абсолютные и относительные координаты. Заполненные фигуры»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
- •Лабораторная работа 17 «Сложные типы данных. Множества»
- •Изучить теоретическую часть работы;
- •Ответить на контрольные вопросы и разобрать примеры;
- •Выполнить все задачи для самостоятельного выполнения.
Лабораторная работа 15 «Графические возможности. Графический режим. Система координат»
Цель работы:
Изучение графических возможностей программной среды.
Порядок выполнения работы:
Изучить теоретическую часть работы;
Ответить на контрольные вопросы и разобрать примеры;
Выполнить все задачи для самостоятельного выполнения.
Система программирования Turbo Pascal снабжена несколькими модулями или "библиотеками" в которых хранятся все её процедуры и функции. Каждая такая библиотека специализирована, т.е. содержит процедуры и функции поддерживающие одно устройство, выполняющие подобные действия и т.д.
Библиотека содержащая процедуры и функции для поддержки графического режима носит имя GRAPH.TPU.
Для того, чтобы компилятор "узнавал" названия процедур и функций содержащихся в библиотеке GRAPH.TPU, мы должны после заголовка программы разместить строчку следующего вида:
Uses Graph; (что можно перевести на русский язык как выражение "используется графика", или "модуль GRAPH.TPU подключён"). Формально эта строка разрешает нам использовать процедуры и функции библиотеки GRAPH.TPU.
До сих пор во время нашей работы за компьютером экран всегда находился в текстовом режиме (поэтому на экране можно было видеть только лишь символы. Для рисования прямых, окружностей и пр. необходимо перевести экран в графический режим. Для включения графического режима используется процедура InitGraph. Простейшая программа, использующая графические возможности, может иметь вид:
Program Ex_1;
Uses Graph;
Var Gd, Gm: integer;
Begin
Gd:=VGA; { графический адаптер VGA }
Gm:=VGAhi; { графический режим VGAhi (640x480)x16 }
Initgraph(Gd,Gm,''); { Включить графический режим
Драйвер в текущем каталоге. }
if GraphResult = grOk then { Если режим включился успешно }
begin
line(0,0,639,479); { нарисовать отрезок прямой }
Readln;
CloseGraph; { выключений графического режима }
end;
End.
Мы видим, что у процедуры InitGraph(Gd,Gm:integer; Path:string) три параметра. В качестве первых двух параметров должны стоять имена целых (integer) переменных. Первый параметр Gd является кодом графического адаптера (т.е. электронной схемы, управляющей выводом информации на экран). Дело в том, что на IBM-совместимых компьютерах применяется ряд стандартных графических адаптеров, носящих названия CGA, EGA, VGA.
По нашей программе можно догадаться, что в используемых нами компьютерах используется адаптер VGA (и компилятор сам "узнаёт" слово VGA и заменит его на нужное целое число).
Каждый графический адаптер позволяет использовать несколько графических режимов, отличающихся количеством цветов и разрешающей способностью. Второй из параметров Gm как раз предназначен для того, чтобы указать, какой из режимов следует включить.
Третий параметр Path является строкой (string), содержащей путь к файлу, который называется egavga.bgi. В этом файле содержится драйвер (такая специальная программа), необходимый для работы мониторов EGA и VGA в графическом режиме. И, как видно из нашего примера, файл этот находится в текущем каталоге.
Функция GraphResult:integer, при обращении к ней, возвращает специальный код (целое число), в зависимости от того, как прошло выполнение любой графической процедуры или функции. Код 0 (grOk) - успешное выполнение. В приведённом выше примере программы Ex_1, данная функция применяется для проверки того, как прошла инициализация графического режима. Дальнейшая работа этой программы возможна лишь тогда, когда код функции GraphResult равен grOk.
CloseGraph - Выключение графического режима.
Для того, чтобы мы могли что-либо нарисовать на экране, нам нужно уметь задавать положение на экране того, что мы рисуем. Для этого с экраном связывается система координат следующего вида:
(0,0) X
+-------------------------------->
¦
¦
¦
¦
¦
V Y
Точка 0,0 находится в левом верхнем углу. Привычная для нас система координат "перевёрнута".
Каждая точка на экране на самом деле представляет собой очень маленький прямоугольник (и поскольку это не совсем точка, то иногда используют специальный термин - "пиксел"). Количество точек (пикселей), умещающихся на экране по вертикали и горизонтали, называют разрешающей способностью. Разрешающая способность экрана в режиме VGAhi - 640x480. Это означает, что по горизонтали на экране умещается 640 точек, а по вертикали - 480.
Описание некоторых графических процедур и функций.
Line(x1,y1,x2,y2: integer); Как Вы уже догадались, процедура Line(x1,y1,x2,y2) рисует на экране отрезок, соединяющий точки (x1,y1) и (x2,y2). Например:
Program Ex_2; { нарисовать треугольник }
Uses Graph;
Var Gd, Gm: integer;
Begin
Gd:=VGA; { графический адаптер VGA }
Gm:=VGAhi; { графический режим VGAhi (640x480)x16 }
Initgraph(Gd,Gm,''); { Включить графический режим Драйвер в текущем каталоге. }
if GraphResult = grOk then { Если режим включился успешно }
begin
line(120,210,520,210); { основание }
line(120,210,320,10); { левая сторона }
line(320,10,520,210); { правая сторона }
end;
End.
При выполнении описанной выше программы мы получим изображение треугольника из белых линий. Обладая цветным монитором VGA мы можем создавать рисунки используя различные цвета и оттенки. В любом случае рисование происходит так называемым "текущим цветом рисования". По умолчанию, текущий цвет рисования белый.
SetColor(Color: word); Для изменения текущего цвета рисования, т.е. для задания цвета рисования прямых, окружностей, точек и пр. используется процедура SetColor. В качестве единственного её параметра Color нужно указать целое число, являющееся кодом цвета. Цвета кодируются в соответствии со следующей таблицей:
Black |
0 |
чёрный |
Blue |
1 |
синий |
Green |
2 |
зелёный |
Cyan |
3 |
циановый |
Red |
4 |
красный |
Magenta |
5 |
сиреневый |
Brown |
6 |
коричневый |
LightGray |
7 |
светло-серый |
DarkGray |
8 |
тёмно-серый |
LightBlue |
9 |
голубой |
LightGreen |
10 |
светло-зелёный |
LightCyan |
11 |
светло-циановый |
LightRed |
12 |
розовый |
LightMagenta |
13 |
светло-сиреневый |
Yellow |
14 |
жёлтый |
White |
15 |
белый |
Program Ex_3; { цветной треугольник }
Uses Graph;
Var Gd, Gm: integer;
Begin
Gd:=VGA; { графический адаптер VGA }
Gm:=VGAhi; { графический режим VGAhi (640x480)x16 }
Initgraph(Gd,Gm,''); { Включить графический режим
Драйвер в текущем каталоге. }
if GraphResult = grOk then { Если режим включился успешно }
begin
setcolor(lightmagenta);
line(120,210,520,210); { основание }
setcolor(lightcyan);
line(120,210,320,10); { левая сторона }
setcolor(green);
line(320,10,520,210); { правая сторона }
end;
End.
GetColor: word; Возвращает текущий цвет рисования.
SetBkColor(color: word); Данная процедура устанавливает текущий цвет фона. По умолчанию текущий цвет фона - чёрный.
GetBkColor: word; Возвращает текущий цвет фона.
ClearDevice; Очищает графический экран закрашивая его в текущий цвет фона, устанавливает указатель текущей позиции в точку с координатами (0,0).
PutPixel(x,y:integer; Pixel:word); Рисует точку с координатами (x,y) цветом Pixel.
GetPixel(x,y: integer): word; Возвращает цвет точки с координатами (x,y).
Rectangle(x1,y1,x2,y2:integer); Строит контур прямоугольника из линий текущего цвета.
Circle(x,y:integer; r:word); Для рисования окружностей используется процедура Circle с тремя целочисленными параметрами:
x,y - координаты центра окружности;
r - радиус.
Arc(x,y:integer; StA,EndA,Radius:word); Нарисует дугу окружности текущим цветом.
x,y - координаты центра окружности данной дуги;
Sta - начальный угол; (в градусах)
EndA - конечный угол; (в градусах)
Radius - радиус дуги.
Ellipse(x,y:integer; stA,endA:word; xr,yr: word); Рисует дугу эллипса текущим цветом.
x,y - координаты центра эллипса;
stA - начальный угол;
endA - конечный угол;
xr,yr - горизонтальная и вертикальная полуоси эллипса.
SetLineStyle(Ln,P,T); Рисование линий, окружностей и их элементов, контуров прямоугольников осуществляется линиями. Процедура SetLineStyle позволяет изменять параметры этих линий. Параметры этой процедуры - целые числа.
Ln - стиль линии:
0 = сплошная;
1 = пунктирная;
2 = штрихпунктирная;
3 = штриховая;
4 = заданная пользователем.
T - толщина линии:
1 = нормальная;
3 = толстая.
P - шаблон:
0 - во всех случаях для Ln от 0 до 3;
Контрольные вопросы:
Какими графическими возможностями обладает среда программирования?
Какие основные процедуры применяют для вывода графической информации?
Задания для самостоятельного выполнения
1. Нарисуйте три окружности с заключёнными в них треугольником, квадратом и звездой. Все фигуры должны быть разного цвета.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
