Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Построение простейших графических изображений



Отображение точки

Какие бы изображения не выводились на экран, все они построены из точек. Процедура PutPixel (X, Y: integer; Color: word); отображает точку на экране, где X и Y - экранные координаты точки. Color - её цвет.

Приведем пример программы, при выполнении которой создается интересный визуальный эффект путем заполнения экрана множеством точек различных цветов.

Отображение отрезков прямых линий

Процедура Line (Xl, Yl, X2, Y2: integer); выводит на экран отрезок прямой линии. Здесь (X1, Y1) - координаты начальной точки, a (X2, Y2) - координаты конечной точки отрезка.

Для построения отрезков можно применять также следующие процедуры:

LineTo (X, Y); - проводит отрезок из текущей точки до точки с координатами (X, Y);

LineRel (dX, dY|; - проводит отрезок из текущей точки до точки, удаленной от нее на расстояние (dX, dY). Линии можно вычерчивать самых различных стилей: тонкие, широкие, штриховые, пунктирные и т.д. Процедура SetLineStyle (< тип линии>: word; < yзop(maблон)>: word; (толщина линии): word); производит установку стиля. Константы типа линий и их толщины приведены в таблице.

 

Таблица 2.5.2. Константы типа линий и их толщины

Имя Значение Назначение

Коды типов линий (для процедуры SetLineStyle )

SolidLn 0 Cплошная
DottedLn 1 Пунктирная
CenterLn 2 Штрихпунктирная
DashedLn 3 Штриховая
UserBitLn 4 Заданная пользователем

Коды толщины линии

NormWidth 1 Нормальная
ThickWidth 3 Толстая

 

Если тип линии не равен UserBitLn, то параметр «узор(шаблон)» не используется и обычно задается равным нулю, например SetLineStyle (0, 0, 3) - стиль линии - сплошная, жирная. 

Построение прямоугольников

Процедура Rectangle (Xl, Yl, X2, Y2: integer); строит изображение прямоугольника на плоскости. Здесь XI, Y1 - координаты левого верхнего угла, X2, Y2 - координаты правого нижнего угла прямоугольника. При этом используется текущий цвет (SetColOf) и стиль линии (SetLineStyle). Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.

Процедура Bar (Xl, Yl, X2, Y2: integer); позволяет строить более эффектные прямоугольники. Она рисует прямоугольник, внутренняя область которого залита по текущему шаблону. Обычно используется в деловой графике для построения столбиковых диаграмм, а также для «закраски» графического окна, чтобы фон графического окна не сливался с общим фоном экрана.

Рассмотрим, как производить «заливку» замкнутых областей экрана с помощью различных узоров, т.е. как выбрать узор (шаблон) и цвет заполнения фигуры. Комбинацию узор-цвет принято называть стилем заполнения.

Процедура SetFillStyle (< шаблон>: word; < цвет>: word); устанавливает шаблон и цвет заполнения замкнутой фигуры.

 

Таблица 2.5.3. Константы шаблонов закраски приведены в таблице

Имя константы Значение Назначение
EmptyFill 0 Заполнение цветом фона
SolidFill 1 Однородное заполнение цветом
LineFill 2 Заполнение вида -
LtSlashFill 3 Заполнение вида ///
SlashFill 4 Заполнение вида /// толстыми линиями
BkSlashFill 5 Заполнение вида \ толстыми линиями
LtBkSlashFill 6 Заполнение вида \
HatchFill 7 Заполнение клеткой
XHatchFill 8 Заполнение косой клеткой
InterleaveFill 9 Заполнение частой клеткой
WideDotFill 10 Заполнение редкими точками
CloseDotFill 11 Заполнение частыми точками
UserFill 12 Определяется пользователем

 

Процедура FloodFill (X, Y: integer; Border: word); заполняет ограниченную область текущим цветом и стилем заполнения (SetFillStyle). Граница закрашиваемой области высвечивается цветом, заданным в Border.

Если точка (X, Y) находится внутри области, то эта область закрашивается, если же она расположена вне области, то заполняется внешняя часть области.

Построение дуг, эллипсов и окружностей

Процедура Arc (X, Y: integer; al, a2, R: word); строит дугу. Здесь (X, Y) - центр окружности дуги, al, a2 - начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, R-радиус. Если al=00, а а2=360°, то вычерчивается полная окружность.

Процедура Ellipse (X, Y: integer; al, a2, Rx, Ry: word); предназначена для построения эллиптических дуг. Здесь (X, Y) - центр эллипса, al, a2 - начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry - горизонтальная и вертикальная полуоси. Если al=0°, а а2 = 3600, то вычерчивается полный эллипс.

Процедура FillEllipse (X, Y: integer; Rx, Ry: word); строит полный закрашенный эллипс.

Процедура Circle (X, Y: integer; R: word); выводит на экран изображение окружности с центром (X, Y) и радиусом R. Окружность рисуется цветом, заданным SetColor.

Процедура PieSlice (X, Y: integer; al, n2, R: word); выводит на экран изображение закрашенного сектора круга, используя в качестве центра круга точку (X, Y), начальный угол al, конечный угол a2 и радиус R. Контур сектора высвечивается текущим цветом. При заполнении сектора используются шаблон и цвет, установленные процедурой SetFillStyle. Если al =0°, а а2=360°, то на экран выводится закрашенная окружность.

Процедура Sector (X, Y: integer; al, a2, Rx; Ry: word); строит закрашенный сектор эллипса.

Реализация имитации движения графических объектов

Создать видимость движения на экране можно двумя способами.

Первый способ заключается в том, что имитация движения объекта на экране создаётся за счёт многократного выполнения программой напора действий: нарисовать - пауза - стереть рисунок (нарисовать его в том же месте цветом фона) - изменить координаты изображения.

Перед началом составления программы надо продумать описание «движущегося» объекта; характер изменения координат, определяющих текущее положение объекта; диапазон изменения и шаг.

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

Для хранения фрагмента удобнее всего использовать динамическую область памяти. Получить размер памяти в байтах, необходимой для сохранения образа фрагмента, позволяет функция ImageSize (X1, Yl, X2, Y2: integer): word. Здесь (X1, YI) и (X2, Y2) - координаты верхнего левого и нижнего правого углов прямоугольника. Если полученный размер памяти больше 64Кб, то значение ImageSize = 0, a GraphResult=-1. Чтобы этого избежать, следует сохранять изображение по частям.

Полученный с помощью функции ImageSize размер памяти применяют в качестве входной информации для процедуры GetMem (p, Size), которая выделяет указанный объем памяти в динамической области. Здесь р - указатель на область памяти, Size - ее размер.

Процедура GetImage (Xl, Yl, X2, Y2: integer; var BitMap: word); сохраняет образ фрагмента в памяти, где XI, Y1, X2, Y2 - координаты фрагмента, BitMap - переменная, которая указывает, где сохраняется образ изображения.

Процедура Putlmage (X, Y: integer; var BitMap, Mo-de: word); восстанавливает сохраненный в буфере Bit-Map прямоугольник, левый верхний угол которого задаётся координатами (X, Y). Параметр Mode задает режим вывода изображения.

Циклы в графике. Построение случайных процессов

Для того, чтобы картинки не были монотонными и регулярными, можно задавать фигурам случайные размеры, цвет, координаты. Для этого имеется специальная функция Random. Она генерирует случайные числа из (0, 1). Для расширения первоначального промежутка используется функция Random (I: word), которая выдает число из диапазона 0… I. На самом деле эти функции генерируют некоторую последовательность псевдослучайных чисел, и чтобы добиться иллюзии полной «случайности» используют команду Randomize, которая изменяет базу датчика случайных чисел.


Заключение

 

Обычно человек мыслит приблизительными категориями, а язык программирования, даже самый простой, никакой приблизительности не терпит. Компьютеру нужно «говорить» абсолютно четко, по пунктам. Если хотя бы одно место прописано недостаточно четко, компьютер остановится и выдаст ошибку.

Относительно лёгкий в освоении, язык Паскаль, который является одним из родоначальников программирования, прекрасно подходит для новичков в программировании.

Паскаль уникальный язык программирования и без основ этого языка невозможно начать свой трудный путь по освоению азов программирования. Только Паскаль может дисциплинировать программиста и научить его логическому мышлению.

В данной курсовой работе описываются различные процедуры и функции, предназначенные для создания графических объектов в Турбо Паскаль.

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

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

Написав данную работу, автор получила навык работы в графической среде Турбо Паскаль, научилась правильно применять разные процедуры и функции, точно определять и задавать координаты различных линий, эллипсов, окружностей, прямоугольников и т.д.

 


 

Список использованной литературы

1. Фаронов В.В. Турбо-Паскаль 7.0. Начальный курс. М.: «Нолидж», 2001

2.  Мизрохи С.В. TURBO-PASCAL и объектно-ориентированное программирование. - М.: Финансы и статистика, 2002

3.  Культин Н.Б. Программирование в Turbo Pascal 7.0 и Delphi. СПб.: БХВ - Санкт-Петербург, 2005.

4.  Прайс Д. Программирование на языке Паскаль: Практическое руководство. Пер. с англ. - М.: Мир, 2007.

5.  Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0. - М.: «ДМК», 2000. - 416 с.

6.  Зуев Е.А. Язык программирования Turbo Pascal 6.0. - М.: Унитех, 1992. - 298 с., ил.

7.  Зуев Е.А. Turbo Pascal. Практическое программирование. - Приор, 1997. - 336 с.

8.  Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль 5.5. - М:., МАИ, 1992. - 576 с.

9.  Лилитко Е.П. Практикум по программированию. Начальный курс. - Переяславль-Залесский, 1997.


Поделиться:



Последнее изменение этой страницы: 2020-02-17; Просмотров: 73; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь