МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ДОНСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Колледж экономики, управления и права
Методические рекомендации
Для УЧЕБНОЙ практиКИ студентов
По дисциплине «Основы алгоритмизации и программирования»
Специальность
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ И АВТОМАТИЗИРОВАННЫХ СИСТЕМ
Автор-составитель Шинакова С.В.
Ростов-на-Дону 2011
Рассмотрены на заседании Ц(П)К специальности 230105.51 Программное обеспечение вычислительной техники и автоматизированных систем
«07» апреля 2011 г. Протокол № 8
Председатель Ц(П)К _____________ Шинакова С.В.
Практическая работа № 6
Тема «Работа с графикой»
Цель работы
Научиться принципам работы с процедурами и функциями модуля Graph в среде программирования Turbo Pascalили Pascal ABC.
Задачи работы
Изучить приемы решения задач с использованием процедур и функций модуля Graph.
Порядок выполнения работы
3.1 В среде программирования Turbo Pascal или Pascal ABC составить и отладить программы решения задач в соответствии с указанным вариантом приложений.
3.2 Провести анализ результатов работы программы.
3.3 Составить отчет о проделанной работе.
Отчет о проделанной работе должен содержать
- название и цель работы;
- номер и условие своего варианта;
- текст программы;
- полученные при тестировании результаты;
- ответы на контрольные вопросы пункта 6 в соответствии с указаниями преподавателя.
Теоретические положения
Описание процедур и функций модуля Graph
Для создания графических изображений в среде Турбо Паскаль предназначен стандартный библиотечный модуль Graph. Он представляет собой библиотеку подпрограмм, которая полностью обеспечивает управление графическими режимами различных адаптеров дисплея. Библиотека содержит около 80 графических процедур и функций, а также десятки стандартных констант и описаний типов данных.
Подключение модуля Graph осуществляется с помощью зарезервированного слова USES:
USES Graph;
Чтобы запустить программу, в которой используются процедуры модуля Graph, необходимо поместить в рабочий каталог соответствующие графические драйверы-файлы с расширением.BGI, которые обеспечивают взаимодействие программ с графическими устройствами. При инициализации определенного графического режима подключается соответствующий драйвер. Для обеспечения работы программы в одном из графических режимов процедура InitGraph определяет тип адаптера и загружает соответствующий BGI-файл.
Процедура инициализации InitGraph( VAR GraphDriver: Integer; {тип адаптера}
VAR GraphMode: Integer; {режим графики}
VAR DriverPath: String;) {путь к драйверу}
Если GraphDriver присваивается значение константы Detect, то система переходит в режим автоопределения и инициализируется соответствующий BGI-драйвер и включается режим максимального разрешения для данного типа видеоадаптера. В GraphDriver и GraphMode при этом процедура возвратит автоматически определенные значения для этих параметров или код ошибки.
Процедура CloseGraph служит для удаления графического драйвера из памяти и восстановления текстового режима видеоадаптера.
В модуле Graph реализован механизм обнаружения ошибок и генерирования сообщений об ошибках с помощью функций GraphResult и GraphErrorMsg.
Функция GraphResult: Integer возвращает 0, если последняя графическая операция выполнилась без ошибок, или число в диапазоне от -15 до -1, если ошибка имела место.
Построение изображений на экране
Для построения изображений на экране в графическом режиме применяется система координат, отличная от используемой в текстовом режиме. Отсчет начинается от верхнего левого угла экрана, который имеет координаты (0,0). Значение X(столбец) увеличивается в направлении слева направо, а значение Y (строка) - в направлении сверху вниз. При этом экран представляется в виде прямоугольного массива адресуемых точек, а не символов.
Определение значений максимальных координат экрана в модуле Graph реализовано с помощью функций
GetMaxX: Integer
GetMaxY: Integer
Процедура MoveTo (X, Y: Integer) перемещает текущий указатель в точку с координатами X, Y.
Процедура MoveRel (dX, dY: Integer) перемещает текущий указатель на dX точек по горизонтали и на dY точек по вертикали относительно последнего положения текущего указателя.
Для определения текущего положения графического курсора используются функции
GetX: Integer
GetY: Integer
Процедура PutPixel (X, Y: Integer; Color: Word) отображает на экране точку с заданными координатами X, Y и цветом C.
Процедура Line (X1, Y1, X2, Y2: Integer) выводит на экран отрезок прямой с координатами начальной (X1, Y1) и конечной (X2, Y2) точек.
Для построения отрезков применяются ещё две процедуры:
LineTo(X,Y) строит отрезок из точки текущего положения указателя до точки с координатами (X,Y)
LineRel(dX,dY) строит отрезок от точки текущего положения указателя до точки с координатами, отстоящими на расстоянии dX по горизонтали и dY – по вертикали.
Установка стиля линии производится процедурой
SetLineStyle(LineStyle: Word; Pattern: Word; Thickness: Word)
Параметром LineStyle задается тип строки, Pattern- шаблон, Thickness- толщина линии.
Константа | Значение | Характеристика линии |
SolidLn | Сплошная | |
DottedLn | Пунктирная | |
CenterLn | Штрих- пунктирная | |
DashedLn | Штриховка | |
UserBitLn | Заданная пользователем | |
NormWidth | Нормальной толщины | |
ThickWidth | Большой толщины |
Если параметр LineStyle не равен UserBitLn, то параметр Pattern не используется и обычно задается равным нулю.
Процедура Rectangle (X1, Y1, X2, Y2: Integer) строит прямоугольник на плоскости
(X1, Y1) –координаты верхнего левого угла, (X2, Y2)- координаты правого нижнего угла прямоугольника
Процедура Bar (X1, Y1, X2, Y2: Integer) рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Данная процедура обычно используется в деловой графике для построения столбиковых диаграмм.
Процедура Bar3D (X1, Y1, X2, Y2: Integer; D3: Word; Top: Boolean) рисует параллелепипед, “лицевая” сторона которого залита по текущему шаблону, а глубина задается в пикселях параметром D3. Параметр Top задает режим отображения верхней плоскости: True- отображать, False- не отображать. Этот параметр необходим для рисования столбцов, расположенных “один на другом”.
Процедура Circle(X, Y: Integer; Radius: Word) рисует окружность (X, Y) –координаты центра окружности, Radius- ее радиус
Процедура Arc (X, Y: Integer; StEngle, EndEngle, Radius: Word) рисует дугу (X, Y) –координаты центра окружности дуги, StEngle и EndEngle- начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Radius- радиус.
Процедура Ellipse (X, Y: Integer; StEngle, EndEngle: Word; XR, YR: Word) рисует дугу (X, Y) –координаты центра эллипса в дисплейных координатах, StEngle и EndEngle - начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, XR и YR – горизонтальная и вертикальная оси.
5.3 Установка цвета и стиля заполнения
Для установки цвета изображения и фона применяются процедуры:
SetColor (Color: Word) задает цвет, который будет использоваться процедурами графического вывода.
SetBkColor (Color: Word) задает новый цвет фона
Номер цвета задается параметром Color
Константа | Значение | Цвет на экране монитора |
Black | Черный | |
Blue | Синий | |
Green | Зеленый | |
Cyan | Голубой | |
Red | Красный | |
Magenta | Малиновый | |
Brown | Коричневый | |
LightGray | Светло-серый | |
DarkGray | Темно-серый | |
LightBlue | Светло-синий | |
LightGreen | Светло-зеленый | |
LightCyan | Светло-голубой | |
LightRed | Светло-красный | |
LightMagenta | Светло-малиновый | |
Yellow | Желтый | |
White | Белый |
В модуле Graph содержится ряд стандартных шаблонов различных узоров для заполнения внутренних и внешних областей различных геометрических фигур. Узор может быть окрашен в допустимые для установленной палитры цвета. Комбинацию узор-цвет называют стилем заполнения.
Процедура SetFillStyle(Pattern: Word; Color: Word) устанавливает маску Pattern и ее цвет Color, т. е. определяет стиль заполнения.
Параметр Pattern может иметь следующие значения:
Константа | Значение | Описание узора |
EmptyFill | Сплошной цветом фона | |
SolidFill | Сплошной текущим цветом | |
LineFill | Типа | |
LtSlashFill | Типа ///нормальной толщины | |
SlashFill | Типа ///удвоенной толщины | |
BkSlashFill | Типа \\\нормальной толщины | |
LtBkSlashFill | Типа \\\удвоенной толщины | |
HatchFill | Заполнение клеткой | |
XHatchFill | Заполнение косой редкой клеткой | |
InterLeaveFill | Заполнение косой частой клеткой | |
WideDotFill | Заполнение редкими точками | |
CloseDotFill | Заполнение частыми точками | |
UserFill | Определяется пользователем |