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

Для построения прямоугольных фигур имеется несколько процедур. Первая из них – вычерчивание одномерного прямоугольника: 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) div4). Параметр 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.



Опубликовал admin
16 Ноя, Воскресенье 2003г.



Программирование для чайников.