Главная страница

Методичка. Полный обучающий курс по Turbo Pascal. Полный обучающий курс Turbo Pascal


Скачать 0.56 Mb.
НазваниеПолный обучающий курс Turbo Pascal
АнкорМетодичка. Полный обучающий курс по Turbo Pascal.doc
Дата27.12.2017
Размер0.56 Mb.
Формат файлаdoc
Имя файлаМетодичка. Полный обучающий курс по Turbo Pascal.doc
ТипДокументы
#13154
КатегорияИнформатика. Вычислительная техника
страница13 из 15
1   ...   7   8   9   10   11   12   13   14   15

Глава 6. Графика в системе Турбо Паскаль

Построение многоугольников

Построение прямоугольников


Для построения прямоугольных фигур имеется несколько процедур. Первая из них – вычерчивание одномерного прямоугольника: Rectangle (x1, y1 , x2, y2:integer ), где x1, y1 – координаты левого верхнего угла, x2, y2- координаты правого нижнего угла прямоугольника. Область внутри прямоугольника не закрашена и совпадает по цвету с фоном.

Более эффектные для восприятия прямоугольники можно строить с помощью процедуры Bar (x1, y1 , x2, y2:integer), которая рисует закрашенный прямоугольник. Цвет закраски устанавливается с помощью SetFillStyle. Еще одна эффектная процедура: Bar3D (x1, y1 , x2,y2, d: integer, a:boolean) вычерчивает трехмерный закрашенный прямоугольник (параллелепипед). При этом используются тип и цвет закраски, установленные с помощью SetFillStyle. Параметр d представляет собой число пикселей, задающих глубину трехмерного контура. Чаще всего его значение равно четверти ширины прямоугольника ( d:= (x2 - x1) div 4 ). Параметр a определяет, строить над прямоугольником вершину (а:=True) или нет (a:=False).

Примеры использования:

1. SetColor(Green);

Rectangle (200, 100, 250,300);

2. SetFillStyle(1,3);

Bar(10,10,50,100);

3. SetFillStyle(1,3);

Bar3D(10,10,50,100,10,True);

Построение многоугольников


Многоугольники можно рисовать самыми различными способами, например с помощью процедуры Line. Однако в Турбо Паскале имеется процедура DrawPoly, которая позволяет строить любые многоугольники линией текущего цвета, стиля и толщины. Она имеет формат DrawPoly( a: word, var PolyPoints)

Параметр PolyPoints является нетипизированным параметром, который содержит координаты каждого пересечения в многоугольнике. Параметр а задает число координат в PolyPoints. Необходимо помнить, что для вычерчивания замкнутой фигуры с N вершинами нужно передать при обращении к процедуре DrawPoly N+1 координату, где координата вершины с номером N будет равна координате вершины с номером 1.

Проиллюстрируем на примере:

program tr; {Программа вычерчивает в центре экрана треугольник красной линией}

uses crt, graph;

var gd, gm: integer;

pp: array[1..4] of PointType;

xm, ym, xmaxD4, ymaxD4:word;

begin

gd:= detect;

Initgraph(gd, gm, ‘ c/bp’);

xm:=GetmaxX; ym:=GetmaxY;

xmaxD4:=xm div 4;

ymaxD4:= ym div 4;

{определение координат вершин}

pp[1].x := xmaxD4;

pp[1].y := ymaxD4;

pp[2].x := xm - xmaxD4;

pp[2].y := ymaxD4;

pp[3].x := xm div 2;

pp[3].y := ym - ymaxD4;

pp[4] :=pp[1];

SetColor(4); {цвет для вычерчивания}

DrawPoly(4,pp); {4 – количество пересечений +1}

readln;

CloseGraph

end. 

            В результате работы программы на экране появится красный треугольник на черном фоне. Изменить фон внутри треугольника можно с помощью процедуры FillPoly(a: word, var PolyPoints). Значения параметров те же, что и в процедуре DrawPоly. Действие тоже аналогично, но фон внутри многоугольника закрашивается. В качестве примера нарисуем в левой верхней части экрана четырехугольную звезду зеленого цвета:

program g;

uses crt, graph;

const

Star: array[1..18] of integer = (75, 0, 100, 50, 150, 75, 100, 100, 75, 150, 50, 100, 0, 75, 50, 50, 75, 0);

var

gd, gm: integer;

begin

gd:= detect;

initgraph(gd, gm, ‘ c/bp’);

SetFillStyle(1,2);

FillPoly(9,Star); {9 – количество пересечений + 1}

CloseGraph;

end.

Глава 6. Графика в системе Турбо Паскаль

Построение дуг и окружностей


Процедура вычерчивания окружности текущим цветом имеет следующий формат:

Cicrle(x, y, r: word), где x, y – координаты центра окружности, r – ее радиус.

Например, фрагмент программы обеспечит вывод ярко-зеленой окружности с радиусом 50 пикселей и центром в точке (450, 100):

SetColor(LightGreen);

Circle(450, 100, 50);

Дуги можно вычертить с помощью процедуры Arc(x, y: integer, a, b, R:integer), где x, y- центр окружности, a, b- начальный и конечный углы в градусах, R – радиус. Для задания углов используется полярная система координат.

Цвет для вычерчивания устанавливается процедурой SetColor. В случае a=0 и b=360, вычерчивается полная окружность.

Например, выведем дугу красного цвета от 0 до 90° в уже вычерченной с помощью Circle(450, 100, 50) окружности:

SetColor(Red);

Arc(450, 100, 0, 90,50);

Для построения эллиптических дуг предназначена процедура Ellipse (x, y: integer, a, b, Rx, Ry: integer), где x, y – центр эллипса, Rx, Ry: горизонтальная и вертикальная оси. В случае a=0 и b=360 вычерчивается полный эллипс. Например, построим голубой эллипс:

SetColor(9);

Ellipse(100, 100, 0, 360, 50,50);

Фон внутри эллипса совпадает с фоном экрана. Чтобы создать закрашенный эллипс, используется специальная процедура FillEllipse (x, y: integer, Rx, Ry: integer). Закраска эллипса осуществляется с помощью процедуры SetFillStyle (a, b: word), где а – стиль закраски (таблица 4), b – цвет закраски (таблица 1). Например, нарисуем ярко-красный эллипс, заполненный редкими точками зеленого цвета:

SetFillStyle(WideDotFill, Green); { установка стиля заполнения}

SetColor(12); {цвет вычерчивания эллипса}

FillEllipse(300, 150, 50, 50);

 

Стандартные стили заполнения


Константа

Значение

Маска

EmptyFill

0

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

SolidFill

1

Заполнение текущим цветом

LineFill

2

Заполнение символами --, цвет – color

LtslashFill

3

Заполнение символами // нормальной толщины, цвет – color

SlashFill

4

Заполнение символами // удвоенной толщины, цвет – color

BkslashFill

5

Заполнение символами \\ удвоенной толщины, цвет – color

LtbkSlahFill

6

Заполнение символами \\ нормальной толщины, цвет – color

HatchFill

7

Заполнение вертикально-горизонтальной штриховкой тонкими линиями, цвет – color

XhatchFill

8

Заполнение штриховкой крест-накрест по диагонали «редкими» тонкими линиями, цвет – color

InterLeaveFill

9

Заполнение штриховкой крест-накрест по диагонали «частыми» тонкими линиями, цвет – color

WideDotFill

10

Заполнение «редкими» точками

CloseDotFill

11

Заполнение «частыми» точками

UserFill

12

Заполнение по определенной пользователем маске заполнения, цвет – color

таблица 4

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

PieSlice (x, y: integer, a, b, R: word), которая рисует и заполняет сектор круга. Координаты x, y – центр окружности, сектор рисуется от начального угла a до конечного угла b, а закрашивание происходит при использовании специальных процедур;

Sector (x, y: integer, a, b, Rx, Ry: word), которая создает и заполняет сектор в эллипсе. Координаты x, y – центр, b, Rx, Ry – горизонтальный и вертикальный радиусы, и сектор вычерчивается от начального угла a до конечного угла b.

Пример использования PieSlice:

SetFillStyle(10, 10); {установка стиля}

SetColor(12); {цвет вычерчивания}

PieSlice(100, 100, 0, 90, 50);

Пример использования Sector:

SetFillStyle(11, 9); {установка стиля}

SetColor(LightMagenta); {цвет вычерчивания}

Sector(300, 150, 180, 135, 60, 70);  
1   ...   7   8   9   10   11   12   13   14   15


написать администратору сайта