Графические возможности Паскаль
Министерство
образования и науки Республики Казахстан
Колледж
Карагандинского
имени академика
Е.А. Букетова
Специальность:
1305000 - «Информационные системы (по областям
применения)»
Дисциплина:
«Программирование»
КУРСОВАЯ РАБОТА
на тему:
«Графические возможности
Паскаль»
Выполнила: обучающаяся
группы ИС-31
Новикова Е. О.
Научный руководитель:
преподователь Гудз О. Д.
Караганда
2012
СОДЕРЖАНИЕ
| ВВЕДЕНИЕ…..………………………………………………… |
3 |
| 1. ГРАФИЧЕСКИЕ
ВОЗМОЖНОСТИ ЯЗЫКА ПАСКАЛЬ ………… |
4 |
|
1.1 История языка ………………………………………… |
4 |
|
1.2 Основные понятия графики …………… |
5 |
| 1.3 Работа с графикой в Паскале ……………………………………………. | 6 |
| 2. РАЗРАБОТКА
ГРАФИЧЕСКОГО ПРОЕКТА ……………………… |
13 |
|
2.1 Этапы создания проекта …………………………………................. |
13 |
| 2.2 Реализация проекта на экране……………………………………………. | 22 |
| ЗАКЛЮЧЕНИЕ…………………………………………………… |
24 |
| СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ..…………………………… | 25 |
| ПРИЛОЖЕНИЕ…………………………………………………… |
26 |
ВВЕДЕНИЕ
В данной курсовой работе рассматривается тема «Графические возможности языка Паскаль». Тема курсовой работы выбрана не случайно, так как графика является довольно интересной областью программирования. Данная курсовая работа показывает, что можно создавать простые рисунки не только в графических программах, таких как Paint, Adobe Photoshop, Corel Draw, но и в среде языка программирования Паскаль.
Целью курсовой работы является разработка «мультипликационного» графического проекта в среде программирования Паскаль. Графические возможности Паскаль будут реализованы на примере персонажа «ЦЫПА».
Курсовая работа состоит из двух основных разделов:
- Графические возможности язык Паскаль;
- Разработка графического проекта «ЦЫПА».
В первом разделе описывается история языка Паскаль, основные понятия графики, работа с графикой в Паскале, описывается понятие «расширение», основные команды построения изображения, графические модули, дается основная структура программы.
Во втором разделе подробно описываются этапы создания «мультипликационного» персонажа «ЦЫПА», дается краткое изложение основных элементов рисунка и рекомендации к написанию программы в целом.
Текст
созданной программы
Данная
курсовая работа может выступать
руководством по созданию графических
изображений в среде языка
Паскаль.
1.
ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ
ЯЗЫКА ПАСКАЛЬ
1.1
История языка
Язык программирования Pascal создан в 1973 году швейцарским ученым Николасом Виртом и был назван в честь выдающегося французского физика, математика и философа Блеза Паскаля (1623-1662), который являлся автором первой в мире вычислительной (суммирующей) машины (1641).
Язык первоначально создавался для целей обучения программированию вообще. По словам автора языка «… разработка языка Паскаль базировалась на двух принципиальных концепциях.
Первая состояла в том, чтобы изобрести язык, приспособленный к обучению программированию как систематической дисциплине, базирующейся на некоторых фундаментальных положениях, ясно и естественно отраженных в языке.
Вторая предполагала разработку конкретных представлений этого языка, которые были бы надежны и эффективны на современных ЭВМ».
Язык Паскаль является не только наилучшим языком обучения программированию, но и дает возможность осуществить простую реализацию его на современных ПЭВМ, использовать его как язык системного программирования, но и является базой для создания более мощных языков.
Широкой популярности Паскаль среди программистов способствовали следующие причины:
– благодаря своей компактности, удачному первоначальному описанию Паскаль оказался достаточно легким для обучения;
– язык программирования Паскаль отражает фундаментальные и наиболее важные концепции (идеи) алгоритмов в очевидной и легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы;
– язык Паскаль позволяет четко реализовывать идеи структурного проектирования и структурной организации данных;
– язык Паскаль сыграл большую роль в развитии методов аналитического доказательства правильности программ и позволил реально перейти от методов отладки программ к системам автоматической проверки правильности программ;
– применение языка Паскаль значительно подняло «планку» надежности разрабатываемых программ за счет требований Паскаль к описанию используемых в программе переменных, проверки согласованности программы при компиляции без ее выполнения;
–
использование в Паскаль простых
и гибких структур управления: ветвлений
циклов.
1.2
Основные понятия
графики
Экраны цветных мониторов состоят из прямоугольной решетки точек (пикселей), светящихся разным цветом. Каждый цветной пиксель образован тремя более мелкими по площади участками красного, зеленого и синего цветов. При свечении этих участков с разной интенсивностью цвета смешиваются, создавая элементы изображения различных оттенков и яркости.
Расширение экрана – это количество точек (пикселей) на единицу длины. Чем это число выше, тем более мелкими являются сами пиксели, и, соответственно, более плотно они располагаются на плоскости, что и приводит к тому, что мы воспринимаем их как единое, цельное изображение. Из года в год разрешающая способность мониторов, принтеров, сканеров и т.п. растет.
Для
использования графических
Паскаль обладает достаточно разнообразными средствами для работы со стандартным VGA экраном (возможно также использование и других типов видеоадаптеров).
VGA адаптер имеет разрешение 640х480 пикселей (точка (0, 0) в левом верхнем углу экрана), 16 цветов.
Положение каждой точки изображения задано координатами X и Y . Координаты – целые числа, они задают номера колонки и строки и не зависят от физического размера экрана. Оси координат направлены следующим образом: горизонтальная ось X направлена слева направо; вертикальная ось Y направлена сверху вниз; верхний левый угол имеет координаты (0, 0).
Важное понятие в машинной графике графический примитив – совокупность пикселей, определяющая некоторую геометрическую фигуру. Наиболее распространенные примитивы – это точка, линия, прямоугольник, закрашенный прямоугольник, окружность и эллипс.
Растровые
изображения обладают одним очень
существенным недостатком: их трудно увеличивать
или уменьшать, т.е. масштабировать.
При уменьшении растрового изображения
несколько соседних точек преобразуются
в одну, поэтому теряется разборчивость
мелких деталей. При увеличении – увеличивается
размер каждой точки, поэтому появляется
ступенчатый эффект. Кроме того, растровые
изображения занимают много места в памяти.
Чтобы избежать указанных проблем, изобрели
так называемый векторный способ кодирования
изображений.
1.3
Работа с графикой
в Паскале
Множество графических процедур и функций среды программирования Pascal собраны в модуле Graph. Модуль это библиотека, которая содержит константы, описания типов данных, переменные и функции. Наиболее часто используются модули System, Dos, Graph, Crt и др. Процедуры и функции модуля System подключаются автоматически и обеспечивают управление выполнением программ, обработку строк, файлов, управление динамической памятью, производят математические расчеты и другие действия.
Для работы в графическом режиме существует обширная библиотека процедур и функций, находящихся в модуле Graph. Чтобы использовать стандартные модули, достаточно знать лишь один оператор:
USES модуль, ... ;
Этот оператор должен быть первым оператором в программе, в нем перечисляются все модули, используемые данной программой; в частности, чтобы работать с графикой, достаточно записать USES Graph. Для изучения всех возможностей модуля Graph, можно воспользоваться справочной службой среды Паскаль (TurboPascal или BorlandPascal).
Модуль Dos поддерживает большинство функций операционной системы и некоторые функции обработки файлов.
Модуль Crt содержит процедуры и функции управления текстовым экранным режимом, использования цветов, окон и звуков.
Модуль Graph обеспечивает работу в графическом видеорежиме.
Средства модуля Graph позволяют формировать на экране различные цветные изображения, которые могут выводиться как на весь экран, так и в предварительно созданные графические окна.
Для подключения библиотеки
InitGraph(var Driver,
Mode: integer; Path:string);
Где:
Driver – переменная типа integer, определяющая тип графического драйвера;
Mode – переменная того же типа, задающая режим работы графического адаптера;
Path – выражение типа string, содержащее путь доступа к файлу драйвера.
Завершает работу адаптера в графическом режиме и восстанавливает текстовый режим работы экрана процедура CloseGraph.
Любая программа, использующая графический режим, будет иметь одну и ту же структуру:
– определение графического драйвера;
– установка графического режима;
– инициализация графического режима;
– построения;
– закрытие графического режима.
Общая
структура графической
Uses crt, graph;
Var Gd, Gm: Integer;
begin
Gd: = Detect;
InitGraph (Gd, Gm, 'c: \bp\bgi');
...
{Здесь построение изображения}
...
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);
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);

- Графические возможности языка Pascal
- Графические материалы
- Графические объекты
- Графические редакторы
- Графические системы
- Графические средства MS Excel
- Графический анализ рынка жилья в регионе Ванино – Советская Гавань
- Графическая информация и средства ее обработки
- Графическая информация и средства её обработки
- Графическая информация и средства её обработки
- Графическая информация и средства её обработки (3)
- Графическая модель дизайна печатного издания на примере газеты
- Графическая языковая игра в рекламных текстах
- Графические возможности математического пакета SMath Studio