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

Автор работы: Пользователь скрыл имя, 16 Сентября 2013 в 10:24, реферат

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

Основная цель данной работы - изучение основ языка программирования , cоздание компьютерных программ и графических изображений на языке Turbo Pascal.
Задачи:
Организация ввода и вывода данных.
Изучение основных правил использования чисел и строк, управляющих конструкциями и циклами, переменных, констант и комментариев.
Создание графических изображений, а также интерфейс пользователя и отладку работы программы.

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

Введение…………………………………………………….2

Рождение Паскаль………………………………………….3

Графические возможности языка Паскаль ……………….4

Работа в графическом видеорежиме. Общий обзор….......4

Инициализация графического режима……………………5

Управление экраном и окнами…………………………….6

Управление цветом и фоном……………………………….7

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

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

Заключение………………………………………………….11

Литература…………………………………………………..12

Приложение ………………………………………………...13

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

Литература.doc

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

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

     При частой работе  с графикой процесс инициализации   удобно оформить отдельной   процедурой.

 

 

 

 

 

 

                                      Управление экраном и окнами

     В графическом режиме поддерживается концепция окон.   Окно представляет собой прямоугольную область экрана со своей относительной системой координат. По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего углов устанавливаются автоматически процедурой инициализации (например, (0,0) и (640,480)).

     Чтобы стереть все изображения на экране, т. е. очистить его, используется процедура без параметров С1еarDevice или процедура GraphDefauits, которая не только очищает экран, а и выполняет все стартовые установки графических параметров.

     Процедура SetViewPort (X1,Y1,X2,Y2 : integer; Clip: boolean); служит для организации окон. Здесь XI,Y1 —координаты левого верхнего угла, X2,Y2 — координаты правого нижнего угла. Параметр Clip определяет, будут ли фрагменты изображения отсекаться при попадании за пределы окна (Clip = True или Clip = ClipOn) или нет (Clip = False или Сliр = СlipOff). После создания окна началом координат станет верхний левый угол окна, который будет иметь координаты (0,0).

     Процедура CiearViewPort; используется для очистки окна. Текущее окно при этом заполняется фоновым цветом, а текущий указатель устанавливается в точку с координатами (0,0). Напомним, что это координаты во внутренней системе координат, связанной с данным окном, а не в системе координат полного экрана. Перейти к системе координат полного экрана можно с помощью процедуры ClearDevice или задав в процедуре установки окна максимально возможные значения: SetViewPort(0,0,GetMaxX,GetMaxY,True).

program Prim_2;

Uses Graph;

Var Driver, Mode: integer;

Procedure GrInit;

Begin

Driver:= Detect; {автораспознавание драйвера}

InitGraph (Driver, Mode,'');

If GraphResult<>0 then

Begin

Writeln ('Ошибка инициализации!');

Writeln ('Работа программы прервана');

Halt (1) {Остановить выполнение программы с кодом завершения - 1}

End

End;

Begin

GrInit;  {графические действия}

{Устанавливаем размеры "открытого  окна"}

Setviewport(1,1,650,450,true); {Рисуем прямоугольник}

Rectangle(50,50,200,200); {Меняем цвет линий для следующей фигуры}

Setcolor(11); {Рисуем прямоугольник}

Rectangle(300,300,400,350); {Меняем цвет линий для следующей фигуры}

Setcolor(5);{Рисуем прямоугольник}

Rectangle(400,30,600,250); {Компьютер ожидает нашего нажатия клавиши Enter}

Readln; {Очістка экрана}ClearViewPort;

{Компьютер ожидает нашего нажатия  клавиши Enter для выхода из графического режима}Readln;

CloseGraph

End.

    В следующей программе изменили только одну строку Setviewport(1,1,650,450,true) нàSetviewport(1,1,250,250,true). Результат выполнения программы тоже изменился. При выполнении алгоритма Пример 2 на экране рисуется 3 прямоугольника, а при выполнении программы 3 - только 1.

                                                 Управление цветом и фоном

 

     Во время инициализации графического режима устанавливается палитра цветов. Палитрой называется максимальный набор цветов, поддерживаемых BGI-драйвером. Она включает 16 цветов, пронумерованных от 0 до 15, которые используются по умолчанию в режимах 640x480 для VGA (и для EGA) как в текстовом, так и в графическом режиме. Названия цветов на английском и русском языках и их номера описаны в таблице.

 

Имя цвета

Номер цвета

Название   цвета

Black

0

Черный

Blue

1

Синий

Оreeon

2

Зеленый

Cyan

3

Голубой

Red

4

Красный

Magenta

5

Фиолетовый

Brown

6

Коричневый

LightGray

7

Светло-серый

DarkGray

8

Темно-серый

LighiBlue

9

Светло-синий

LightGreen

10

Светло-зеленый

LightCyan

11

Светло-голубой

LightRed

12

Светло-красный

LightMagenla

13

Сетло-филоетовый

White

14

Белый

Yellow

15

Желтый


 

Для установки цвета изображения  и окна применяются  процедуры   SetColor и SetBkColor.

     Процедура SetColor((ueeT) : word); служит для задания цвета, которым будут обозначены контуры фигуры или текста. Если в качестве цвета указан недопустимый номер  цвета, то текущий  цвет не изменяется.

     Процедура SetBkColor(<цвет>:word); устанавливает новый  цвет фона.

 

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

 

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

 

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

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

 

Пример.

 

Uses Crt, Graph;

Var    Driver,Mode : integer; Color: word;

X,Y:word; Procedure GrInit;

Begin

Driver:= Detect; {автораспознанание драйвера} InitGraph(Driver,Mode,'');

If GraphResult<>0 then Begin

Writeln ('Ошибка  инициализации!');

Writeln ('Работа   программы  прервана');

Halt (1) {остановить  выполнение  программы с кодом завершения — 1}

                        End

End;

Begin

GrInit;

Color: =0; Randomize; Repeat

{выберем    случайным    образом    координаты точки}

X: = Random(GetMaxX);

Y: = Random(GetMaxY);

PutPixel(X,Y,Color), {вывод точки} 

Inc(Color); {изменение цвета}

{проверим,  не  превышает ли  значение  цвета максимального   значения,   которое   определяет   функция GetMaxColor}

 

If Color = GetMaxColor Then Color: =0;

Until KeyPressed; {повторять до нажатия любой клавиши)

ClearDevice;

{CloseGraph}

End. 

 

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

 

    Процедура 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); производит установку стиля. Константы типа линий и их толщины приведены в таблице.

 

Константа

 

Характеристика линий

SolidLn

0

Сплошная линия 

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); устанавливает шаблон и цвет заполнения замкнутой фигуры.

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

 

Константа

Значение

Описание узора

EmptyFill

0

Закраска  области фоновым  цветом

SolidFill

1

Сплошная закраска области текущим  цветом

LineFill

2

Закраска линиями —

LtSlashFill

3

Закраска линиями ///

SlashFill

4

Закраска жирными линиями///

BkSlashFill

5

Закраска  жирными линиями\\\

LtBkSlashFill

6

Закраска линиями ///

HatchFill

7

Закраска  редкой  штриховкой

XhalchFill

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=0o, а а2=360°, то вычерчивается полная окружность.

   Процедура Ellipse (X,Y: integer; al,a2,Rx,Ry: word); предназначена для построения эллиптических дуг. Здесь (X,Y)—центр эллипса, al,a2 — начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки, Rx и Ry — горизонтальная и вертикальная полуоси.   Если   al=0°,   а   а2 = 36О,  то   вычерчивается ПОЛНЫЙ   ЭЛЛИПС.

    Процедура 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); строит закрашенный сектор эллипса.

 

 

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

 

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

      нарисовать —  пауза — стереть рисунок (нарисовать его в том же месте цветом фона)— изменить координаты изображения.

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

 

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

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