Turbo Pascal, страница 7
Описание файла
Документ из архива "Turbo Pascal", который расположен в категории "". Всё это находится в предмете "информатика" из 3 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Turbo Pascal"
Текст 7 страницы из документа "Turbo Pascal"
По умолчанию окно занимает весь экран, значения координат его левого верхнего и правого нижнего угла устанавливаются автоматически процедурой инициализации InitGraph.
Если требуется создать окно, следует воспользоваться процедурой SetViewPort (x1, y1, x2, y2 : integer, Clip:boolean) ; где x1, y1 – координаты левого верхнего угла, x2, y2 –
координаты правого нижнего угла окна. Параметр Clip определяет, будет ли рисунок отсекаться при выходе за границы окна (Clip:= True) или нет (Clip:=False). После создания окна за точку отсчета принимается верхний левый угол окна, имеющий координаты (0,0).
Координатную систему полного экрана можно восстановить, в частности, с помощью ClearDevice или задав в процедуре установки окна максимально возможные значения:
SetViewPort( 0, 0, GetMaxX, GetMaxY, true);
Необходимо помнить, что в отличие от текстовых окон графические окна после команды установки фона SetBkColor и очистки с помощью ClearViewPort меняют фон вместе с общим фоном экрана. Поэтому фон (точнее «закраску») графического окна следует устанавливать с помощью процедур SetFillStyle и SetFillPattern.
Вывод простейших фигур
Вывод точки
Какие бы изображения не выводились на экран, все они построены из точек, теоретически можно создать любое изображение путем построения точек определенного цвета в нужном месте экрана. В библиотеке Graph вывод точки осуществляется процедурой
PutPixel (x, y: integer, color:word);
где x, y: координаты расположения точки, color – цвет.
Возможные значения Color приведены в таблице:
Цветовая шкала
Цвет | Код | Цвет | Код |
Black – черный | 0 | DarkGray – темно-серый | 8 |
Blue – синий | 1 | LightBlue – голубой | 9 |
Green - зеленый | 2 | LightGreen – ярко-зеленый | 10 |
Gyan – бирюзовый | 3 | LightGyan – ярко-бирюзовый | 11 |
Red – красный | 4 | LightRed – ярко-красный | 12 |
Magenta – малиновый | 5 | LightMagenta – ярко-малиновый | 13 |
Brown – коричневый | 6 | Yellow – желтый | 14 |
LightGray – светло-серый | 7 | White – белый | 15 |
Пример.
PutPixel(320, 240, 4); ü
ý- выводит в центре экрана точку красного цвета
PutPixel(320,240, Red);þ
Вывод линии
Из точек строятся линии (отрезки прямых). Это можно сделать с помощью процедуры
Line (x1, y1 , x2,y2 :integer);
где x1, y1 – координаты начала, x2,y2 - координаты конца линии, например Line(1,1,600,1);
В процедуре Line нет параметра для установки цвета. В этом случае цвет задается процедурой SetColor (цвет: word); где цвет из таблицы 1.
Пример.
SetColor(Gyan);
Line(1,1,600,1);
Для черчения линий применяются еще две процедуры: LineTo и LineRel. Процедура LineTo (x,y: integer) строит линию из точки текущего положения указателя в точку с координатами x,y. Процедура LineRel (dx,dy: integer) проводит линию от точки текущего расположения указателя (x, y) в точку x+dx, y+dy.
Турбо Паскаль позволяет вычерчивать линии самого различного стиля: тонкие, широкие, штриховые, пунктирные и т.д. Установка стиля производится процедурой SetLineStyle(a,b,c: word), где a устанавливает тип строки, возможные значения которого приведены в таблице 2; b – образец, с – толщина линии, определяемая константами, указанными в таблице 3. Если применяется один из стандартных стилей, то значение b равно 0. Если пользователь хочет активизировать собственный стиль, то значение b =4. В этом случае пользователь сам указывает примитив (образец), из которого строится линия.
Например:
SetLineStyle(1,0,1);
Line(15,15, 150,130);
или
SetLineStyle(UserBitLn,$5555,ThickWidth);
Line(15,15, 150,130);
таблица 2
Константа | Значение | Описание |
SolidLn | 0 | Непрерывная линия |
DottedLn | 1 | Линия из точек |
CenterLn | 2 | Линия из точек и тире |
DashedLn | 3 | Штриховая линия |
UserBitLn | 4 | Тип пользователя |
таблица 3
Константа | Значение | Описание |
NormWidth | 1 | Нормальная толщина (1 пиксель) |
ThickWidth | 3 | Жирная линия (3 пикселя) |
Пример: Написать программу, которая вычерчивает треугольник красной линией в центре экрана.
Program treug;
uses graph; { подключение библиотеки графических процедур}
var gd,gm: integer; {описание переменных, определяющих графический драйвер и монитор}
begin
gd:=detect; {определение значений переменных по выбору ПК}
initgraph(gd, gm, ‘ c/bp’); {инициализация графического режима}
SetColor(4); {задание цвета линии}
SetLineStyle(1,0,3); {задание стиля линии}
Line(320, 240, 320, 180);
Line(320, 240, 390, 240);
Line(390, 240, 320, 180);
end.
Построение многоугольников
Построение прямоугольников
Для построения прямоугольных фигур имеется несколько процедур. Первая из них – вычерчивание одномерного прямоугольника: 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.
Построение дуг и окружностей
Процедура вычерчивания окружности текущим цветом имеет следующий формат:
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