Графические возможности Паскаль

Автор работы: Пользователь скрыл имя, 18 Февраля 2012 в 13:28, курсовая работа

Краткое описание

Целью курсовой работы является разработка «мультипликационного» графического проекта в среде программирования Паскаль. Графические возможности Паскаль будут реализованы на примере персонажа «ЦЫПА».
Курсовая работа состоит из двух основных разделов:
1. Графические возможности язык Паскаль;
2. Разработка графического проекта «ЦЫПА».

Содержание работы

ВВЕДЕНИЕ…..………………………………………………………………….
1. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПАСКАЛЬ …………………
1.1 История языка …………………………………………………………….
1.2 Основные понятия графики ………………………………………….......
1.3 Работа с графикой в Паскале …………………………………………….
2. РАЗРАБОТКА ГРАФИЧЕСКОГО ПРОЕКТА ……………………………..
2.1 Этапы создания проекта ………………………………….........................
2.2 Реализация проекта на экране…………………………………………….
ЗАКЛЮЧЕНИЕ……………………………………………………………………
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ..……………………………
ПРИЛОЖЕНИЕ…………………………………………………………………....

Содержимое работы - 1 файл

Министерство образования и науки Республики Казахстан.doc

— 294.50 Кб (Скачать файл)

{Здесь  построение изображения}

...

ReadKey;

CloseGraph;

end.

   Драйвер EGAVGA . BGI позволяет использовать 16 цветов. Каждому цвету присвоен код – целое число, которое используется процедурами и функциями.

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

SetColor (color: word );

   Аргумент  color – целое число от 0 до 15 или имя одной из приведенных ниже констант.  
 

Таблица 1. Константы цветов

Имя константы Номер цвета Цвет
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 Белый
 

   Установка цвета действует на линии и тексты, которые выводятся после ее вызова, но не меняет цвет линий и символов, выведенных на экран ранее. Таким образом, процедуру SetColor следует вызывать каждый раз перед выбором нового цвета. Если цвет не установлен, то используется белый цвет.

   Чтобы установить цвет фона для всего экрана, используется процедура:

SetBkColor (color: word);

Если  процедура установки цвета фона не вызвана, экран будет черным. 

Основные  процедуры:

PutPixel (x, y, c) – отображает на экране точку с координатами (x, y) и цветом c.

   Line (x1, y1, x2, y2: integer) вычерчивает линию между двумя точками экрана с координатами (x1, y1) и (x2, y2).

   LineTo (x, y: integer) вычерчивает линию от последнего положения указателя до точки с координатами (x, y).

   Circle (x, y: integer; r: word) вычерчивает окружность радиуса r с центром в точке с координатами (x, y).

   Arc (x, y, ugol_ begin, ugol_ end, r: integer) вычерчивает дугу окружности радиуса r с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Отсчет углов ведется пгубкиив часовой стрелки. Значения угловых координат задается в градусах.

   Ellips (x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает эллипс или дугу эллипса с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца дуги. Параметры rx и ry определяют горизонтальный и вертикальный радиусы эллипса.

   PieSlice (x, y: integer; ugol_ begin, ugol_ end, r: word) вычерчивает сектор окружности радиуса r с центром в точке с координатами (x, y). Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора.

Сектор  может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle.

   Sector (x, y: integer; ugol_ begin, ugol_ end, rx, ry: word) вычерчивает сектор эллипса с центром в точке с координатами (x, y) и горизонтальным радиусом rx, вертикальным – ry. Параметры ugol_ begin и ugol_ end задают угловые координаты начала и конца сектора. Сектор может быть закрашен в соответствии со стилем, заданным процедурой SetFillStyle.

   Rectangle (x1, y1, x2, y2: integer) вычерчивает контур прямоугольника. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего.

   Bar (x1, y1, x2, y2: integer) вычерчивает закрашенный прямоугольник. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего. Стиль и цвет заливки определяется процедурой SetFillStyle.

   Bar3 D(x1, y1, x2, y2: integer; глубина: word; граница: boolean) вычерчивает параллелепипед. Параметры x1, y1 задают положение левого верхнего угла, x2, y2 – правого нижнего угла ближней грани. Параметр глубина задает расстояние между передней и задней гранями в пикселях. Параметр граница определяет, нужно ли вычерчивать верхнюю границу задней грани параллелепипеда. Стиль и цвет заливки ближней грани определяется процедурой SetFillStyle.

   OutText (text: string) выводит строку символов text от текущей позиции указателя вывода и перемещает указатель в точку, расположенную за последним выведенным символом.

   OutTextXY (x, y: integer; text: string) выводит строку символов text, начиная с точки с координатами (x, y), при этом указатель своего положения не меняет, т.е. остается в точке (x, y).

   SetLineStyle (type, pattern, thick: word) устанавливает стиль вычерчиваемых линий. Здесь type, pattern, thick – соответственно тип, образец и толщина линии.

   Тип линии может быть задан с помощью  одной из следующих констант:

        SolidLn=0 (сплошная линия)

     DottedLn=1 (точечная линия)

                – CenterLn=2 (штрихпунктирная линия)

     DashedLn=3 (пунктирная линия)

     UserBitLn=4 (узор определяет пользователь)

   Параметр Pattern учитывается только для линий, вид которых определяется пользователем, т.е. если type=4. Во всех остальных случаях можно поставить любое значение типа word (но обязательно поставить, все-таки это параметр процедуры, значит должен быть).

Параметр  thick может принимать одно из двух значений:

   SetFillStyle (style, color: word) устанавливает стиль и цвет заливки (закрашивания) областей (Bar, Bar3 D, Sector и др.). В качестве параметра style используют одну из констант:

     EmptyFill=0 (заливка цветом фона);

     SolidFill=1 (сплошная заливка текущим цветом);

     LineFill=2 (горизонтальная штриховка);

     LtSlashFill=3 (штриховка под углом 45 ° влево тонкими линиями);

     SlashFill=4(штриховка под углом 45 ° влево утолщенными линиями);

     BkSlashFill=5 (штриховка под углом 45 ° вправо утолщенная);

     LtBkSlashFill=6 (штриховка под углом 45 ° вправо тонкая);

     HatchFill=7 (заполнение +++++);

     XHatchFill=8 (заполнение под углом 45 ° редкой косой клеткой);

     InterleaveFill=9 (заполнение под углом 45 ° частой косой клеткой);

     WideDotFill=10 (заполнение редкими точками);

     CloseDotFill=11 (заполнение частыми точками);

     UserFill=12 (узор определяется пользователем).

     FloodFill (x, y: integer; border: word) заполняет произвольную замкнутую фигуру, используя текущий стиль и цвет заполнения. Координаты точки (x, y) указывают, начиная с какой точки, будет производиться заливка. Если точка находится внутри замкнутой фигуры, то будет закрашена внутренняя область. Если фигура не замкнута, то заливка разольется по всему экрану. Параметр border указывает цвет граничной линии.

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

   2. РАЗРАБОТКА ГРАФИЧЕСКОГО  ПРОЕКТА «ЦЫПА» 

   2.1 Этапы создания проекта 

      

   Графические возможности в паскаль были рассмотрены на примере мультипликационного персонажа «ЦЫПА». 

     

     Рисунок 1. Эскиз мультипликационного персонажа 

   Для более удобного расчета координат необходимо взять заранее подготовленный рисунок (рис. 1) и по его контурным линиям рассматривать, какие потребуется процедуры и координаты.

   Прежде  чем приступить к работе по созданию героя, необходимо подключить графический модуль языка Паскаль – GRAPH. Для этого нужно написать следующую команду:

initgraph(gd,gm, 'd:/distr/tp7');

   Чтобы нарисовать мультипликационного персонажа «ЦЫПА» потребуется многократное применение команды Ellipse, так как персонаж состоит из кривых, волнистых линий.

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

   Для создания «головы» персонажа и заливки  контура линии необходимо записать:

setcolor(6);

ellipse(225,100,0,180,65,40);

ellipse(160,120,90,270,5,20);

ellipse(290,120,270,90,5,20);          

line(160,140,187,180);           {golova}                                                                                           

line(290,140,270,180);

ellipse(255,190,225,45,20,13);

ellipse(200,190,135,320,19,13);

   Для заливки используется команды SetColor, а для рисования линий Ellips:

     – Ellipse (x, y, ba, ea, xr, yr) – рисует дугу эллипса с центром в (x, y), горизонтальным и вертикальным радиусом xr и yr, и начальным и конечным углом ba и ea.

     – SetColor (c) – устанавливает цвет изображения (для линий) из перечня цветов в нашем случае взяли setcolor (6) оранжевый.

   Все остальные линии, которые показаны на рисунке, изображаются аналогично, так же при помощи процедуры Ellipse, но с другими координатами. Некоторые части контура рисунка будут выполнены при помощи процедуры Line.

   Изображение «глаз» следует выполнить при  помощи процедуры Ellipse. И так сначала построим первый «глаз»:

ellipse(205,170,0,180,11,54); {glaz 1}

ellipse(205,145,0,180,10,14);

ellipse(203,167,0,180,4,13);

ellipse(205,172,0,180,14,5);

Информация о работе Графические возможности Паскаль