русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

ЛАБОРАТОРНАЯ РАБОТА № 5-III_tp


Дата добавления: 2015-06-12; просмотров: 646; Нарушение авторских прав


«Графический режим»

 

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

 

Теоретическая часть:

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

Драйвер - это специальная программа, которая управляет техническими средствами компьютера.

Необходимые процедуры и функции для работы с графикой собраны стандартном модуле - Graph.

Инициализация графики производится с помощью процедуры InitGraph, которая имеет вид:

InitGraph (GraphDriver, GraphMode, Path);

где переменные GraphDriver и GraphMode имеют тип Integer, а переменная Path имеет тип String.

Любая информация при работе в графическом режиме на экране монитора представлена совокупностью светящихся точек - пикселей, которые определяются цветом и координатами - положением относительно левого верхнего угла экрана с координатами (0,0).

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

Чтобы точно строить изображение на экране, нужно сначала нарисовать, как это должно выглядеть на бумаге. Для этого начертите систему координат графического режима.

 
 

 


Отсчет начинается с верхнего левого угла с координатами (0;0), значение Х - столбец, отсчет слева направо; значение Y - строка, отсчет сверху вниз.

После инициализации графического режима указатель стоит в точке (0;0). Чтобы переместить его в нужное место используют следующие процедуры:



 

Процедура Значение
MoveTo (X, Y) перемещает текущий указатель в точку с координатами (X,Y)
MoveRel (dX, dY) перемещает текущий указатель по горизонтали на расстояние, равное dX пикселям, а по вертикали на расстояние, равное dY пикселям
PutPixel(X, Y, Color) процедура выводит точку заданного цвета Color в точку с координатами (X, Y)
Line (X1, Y1, X2, Y2) рисуется линия от точки (X1, Y1) до точки (X2, Y2)
LineTo (X, Y) рисуется линия из точки, где находится в данный момент курсор в точку (X, Y)
Процедура Значение
LineRel (dX,dY) рисуется линия из точки, где находится в данный момент курсор (X, Y) в точку (X+dX,Y+dY)
SetColor (Color) устанавливает текущий цвет для выводимых линий и символов
Circle (X, Y, R) Рисуется окружность в центре (X, Y) c радиусом R
Arc (X, Y, BegA, EndA, R) Рисуется дуга (часть окружности) с координатами центра (X, Y), с радиусом R, которая начинается от угла BegA до угла EndA в полярной системе координат
Ellipse (X, Y, BegA, EndA , хR, yR) рисуется дуга эллипса, у которого центр находится в точке (X, Y), BegA - начальный угол, EndA - конечный угол, хR - радиус по горизонтальной оси, yR - радиус по вертикальной оси
Rectangle (X1, Y1, X2, Y2) рисуется прямоугольник, X1, Y1 - координаты верхнего левого угла, X2, Y2 - координаты нижнего угла
Процедура Значение
SetLineStyle (Type, Pattern, Thick) устанавливает стиль линий. Type - тип линии, Тип линии может быть задан с помощью одной из следующих констант: 0 - непрерывная линия; 1 - линия из точек; 2 - линия из точек и тире; 3 - пунктирная линия; 4 – линия, определяемая пользователем. Pattern - образец линии. Учитывается только для линий, вид которых определяет пользователь. Таким образом можно задать линии в виде отрезков длиной до 16 пиксель. Thick - толщина линии. 1 - толщина в один пиксель; 3 - толщина в три пикселя

SetFillStyle (Pattern, Color) определяет стиль заполнения и цвет заполнения. Значения Pattern можно взять из следующей таблицы:
Константа Код Маска-заполнение
EmptyFill цветом фона
SolidFill текущим цветом
LineFill символами - -, цвет - Color
LtSlashFill символами //норм. толщины, цвет - Color
SlashFill символами //удвоенной толщины, цвет - Color
BkSlashFill символами \\удвоенной толщины, цвет - Color
LtBkSlashFill символами \\норм. толщины, цвет - Color
HatchFill вертикально-горизонтальная штриховка тонкими линиями, цвет - Color
XhatchFill штриховка крест-накрест по диагонали “редкими” тонкими линиями, цвет - Color
InterLeaveFill штриховка крест-накрест по диагонали “частыми” тонкими линиями, цвет - Color
WideDotFill “редкие” точки
CloseDotFill “частые” точки

 

FloodFill(X, Y, ColorBorder) процедура, которая позволяет заполнить замкнутую область выбранным стилем и цветом закраски. - (X, Y) являются координатами точки, лежащей обязательно внутри закрашиваемой области; - ColorBorder - параметр, обозначающий цвет, которым нарисована закрашиваемая фигура (так называемый цвет “бордюрчика”); - фигура должна быть начерчена одним цветом; - фигура должна быть замкнута.
SetBkColor(Color) процедура, устанавливающая цвет фона
ClеarDeviсe очищает экран и устанавливает курсор в позицию (0,0)
GraphDefaults cбрасывает заданные пользователем параметры графического режима и устанавливает исходные

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

Цвет Цвет Код Цвет Цвет Код
Black черный DarkGray темно-серый
Blue синий LightBlue ярко-голубой
Green зеленый LightGreen ярко-зеленый
Cyan бирюзовый LightCyan ярко-бирюзовый
Red красный LightRed ярко-красный
Magenta малиновый LightMagenta ярко-малиновый
Brown коричневый Yellow желтый
LightGray светло-серый White белый

Для запуска графической системы необходимо:

1. Подключить модуль GRAPH - библиотеку графических процедур:

Uses Graph;

2. Установить графический режим с помощью двух переменных:

Var

GraphDriver, GraphMode: integer;

Begin

GraphDriver:=detect;

InitGraph(GraphDriver, GraphMode, 'C:\Programs\TP7.1\BGI');

{С этого момента все графические средства доступны пользователю}

{тело программы}

CloseGraph;

End.

Ход работы:

1. Запустить Turbo Pascal.

2. Набрать текст программы, рисующей корабль.

Program ship;

Uses Graph;

Var GD,GM,x:integer;

Begin

GD:=Detect;

InitGraph (GD,GM, 'C:\Programs\TP7.1\BGI');


 


ClearDevice;

Setfillstyle (1,cyan);

Floodfill (1,1,cyan);

Setcolor (brown);

Arc (400,250,270,0,50);

Moveto (200,300);

Linerel (-50,-50);

Linerel (300,0);

Moveto (200,300);

Linerel (200,0);

Moveto (350,250);

Linerel (0,-200);

Linerel (3,0);

Linerel (0,200);

Setcolor (black);

Ellipse (349,140,90,270,95,90);

Ellipse (349,140,90,270,30,90);

Setfillstyle (9,brown);

Floodfill (300,260,brown);

x:=0;

Setcolor (blue);

repeat

Ellipse (x,294,180,0,10,7);

x:=x+20;

until x=680;

x:=0;

Setcolor (black);

repeat

Ellipse (x,310,180,0,10,7);

x:=x+20;

until x=680;

Setfillstyle (1,blue);

Floodfill (1,400,blue);

x:=0;

repeat

Ellipse (x,310,180,0,10,7);

x:=x+20;

until x=680;

x:=0;

repeat

Ellipse (x,335,180,0,10,7);

x:=x+20;

until x=680;

x:=0;

repeat

Ellipse (x,365,180,0,10,7);

x:=x+20;

until x=680;

x:=0;

repeat

Ellipse (x,400,180,0,10,7);

x:=x+20;

until x=680;

x:=0;

repeat

Ellipse (x,440,180,0,10,7);

x:=x+20;

until x=680;

Setfillstyle (1,lightgray);

Floodfill (300,200,black);

Setfillstyle (1,brown);

Floodfill (351,245,brown);

Setcolor (yellow);

Circle (50,50,20);

Setfillstyle (1,yellow);

Floodfill (50,50,yellow);

Setcolor (white);

Settextstyle (gothicfont,0,3);

Outtextxy (360,250,'Shark');

Setcolor (darkgray);

Arc (500,70,30,150,10);

Arc (518,70,30,150,10);

Arc (530,85,30,150,10);

Arc (548,85,30,150,10);

Arc (505,100,30,150,10);

Arc (523,100,30,150,10);

Setcolor (red);

Ellipse (280,120,190,350,10,3);

Moveto (290,120);

Linerel (-5,20);

Linerel (20,-5);

Ellipse (305,145,100,260,3,10);

Moverel (0,20);

Linerel (-20,-5);

Linerel (5,20);

Ellipse (280,170,10,170,10,3);

Moverel (-20,0);

Linerel (5,-20);

Linerel (-13,5);

Ellipse (262,145,280,80,3,10);

Moverel (0,-20);

Linerel (13,5);

Linerel (-5,-20);

Setfillstyle (1,red);

Floodfill (275,125,red);

Readln;

CloseGraph;

End.


 

Вопросы:

1. Что такое драйвер? Где он находится?

2. Что значит инициализировать графический режим? Что для этого нужно сделать?

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

4. Какие основные ошибки Вы допускали при инициализации графики?

5. Назовите процедуры очистки экрана в текстовом и графическом режиме.

6. С помощью какой процедуры можно поменять цвет рисования линии?

7. С помощью какой процедуры можно поменять стиль закраски? Что обозначают параметры этой процедуры?

8. Каким требованиям должна соответствовать фигура, чтобы она закрасилась без ошибок?

9. Ответы на вопросы зафиксировать в отчете.

 

Задание на следующую лабораторную работу:

 

Нарисовать любой рисунок и составить программу, которая выводит рисунок на экран.



<== предыдущая лекция | следующая лекция ==>
Условные графические обозначения, применяемые при составлении схем алгоритмов | Понятие массива данных


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.917 сек.