Методичка. Полный обучающий курс по Turbo Pascal. Полный обучающий курс Turbo Pascal
Скачать 0.56 Mb.
|
Глава 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); Стандартные стили заполнения
таблица 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); |