- •Содержание
- •Введение
- •Запуск интегрированной среды программирования.
- •Алфавит языка
- •Элементарные конструкции
- •Простые типы данных
- •Лабораторная работа № 1 «Простейшие программы»
- •Лабораторная работа № 2 «Ввод - вывод. Простейшие линейные программы»
- •Лабораторная работа № 3 «Графический режим»
- •Лабораторная работа № 5 «Массивы»
- •Лабораторная работа № 6 «Циклы»
- •Лабораторная работа № 7 «Строки»
Лабораторная работа № 3 «Графический режим»
Цель работы: получить навыки по работе с графическим режимом в среде 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 - толщина в три пикселя |
FloodFill(X, Y, ColorBorder) |
процедура, которая позволяет заполнить замкнутую область выбранным стилем и цветом закраски. (X, Y) являются координатами точки, лежащей обязательно внутри закрашиваемой области; ColorBorder - параметр, обозначающий цвет, которым нарисована закрашиваемая фигура (так называемый цвет “бордюрчика”); фигура должна быть начерчена одним цветом; фигура должна быть замкнута. |
Процедура |
Значение | |||||||||||||||||||||||||||||||||||||||
SetFillStyle (Pattern, Color) |
определяет стиль заполнения и цвет заполнения. Значения Pattern можно взять из следующей таблицы:
| |||||||||||||||||||||||||||||||||||||||
SetBkColor(Color) |
процедура, устанавливающая цвет фона | |||||||||||||||||||||||||||||||||||||||
ClеarDeviсe |
очищает экран и устанавливает курсор в позицию (0,0) | |||||||||||||||||||||||||||||||||||||||
GraphDefaults |
cбрасывает заданные пользователем параметры графического режима и устанавливает исходные |
Для задания цвета точки можно использовать как слово на английском языке, так и соответствующую цифру из таблицы:
Цвет |
Цвет |
Код |
Цвет |
Цвет |
Код |
Black |
черный |
0 |
DarkGray |
темно-серый |
8 |
Blue |
синий |
1 |
LightBlue |
ярко-голубой |
9 |
Green |
зеленый |
2 |
LightGreen |
ярко-зеленый |
10 |
Cyan |
бирюзовый |
3 |
LightCyan |
ярко-бирюзовый |
11 |
Red |
красный |
4 |
LightRed |
ярко-красный |
12 |
Magenta |
малиновый |
5 |
LightMagenta |
ярко-малиновый |
13 |
Brown |
коричневый |
6 |
Yellow |
желтый |
14 |
LightGray |
светло-серый |
7 |
White |
белый |
15 |
Для запуска графической системы необходимо:
1. Подключить модуль GRAPH - библиотеку графических процедур:
Uses Graph;
2. Установить графический режим с помощью двух переменных:
Var
GraphDriver, GraphMode: integer;
Begin
GraphDriver:=detect;
InitGraph(GraphDriver, GraphMode, 'C:\Programs\TP7.1\BGI');
{С этого момента все графические средства доступны пользователю}
{тело программы}
CloseGraph;
End.
Ход работы:
Запустить Turbo Pascal.
Набрать текст программы, рисующей корабль.
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.
Вопросы:
Что такое драйвер? Где он находится?
Что значит инициализировать графический режим? Что для этого нужно сделать?
Где находятся стандартные графические функции и процедуры? Что нужно сделать, чтобы ими воспользоваться?
Какие основные ошибки Вы допускали при инициализации графики?
Назовите процедуры очистки экрана в текстовом и графическом режиме.
С помощью какой процедуры можно поменять цвет рисования линии?
С помощью какой процедуры можно поменять стиль закраски? Что обозначают параметры этой процедуры?
Каким требованиям должна соответствовать фигура, чтобы она закрасилась без ошибок?