Иллюстрированный самоучитель по Turbo Pascal

Краски, палитры, заполнения

Процедура Bar

Заполняет прямоугольную область экрана. Заголовок:

Procedure Bar(X1,Y1,X2,Y2: Integer);

Здесь X1…Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2, Y2) углов закрашиваемой области.

Процедура закрашивает (но не обводит) прямоугольник текущим образцом узора и текущим цветом, которые устанавливаются процедурой SetFillStyle.

Следующая программа дает красивые цветовые эффекты (закраска случайных прямоугольников).

Uses Graph, CRT;
var
d, r, e: Integer;
begin
{Инициируем графику}
d: = Detect; InitGraph(d, r, '');
e: = GraphResult; if e <> grOk then
WriteLn(GraphErrorMsg(e))
else
begin
{Создаем окно в центре экран}
d: = GetMaxX div 4;
r: = GetMaxY div 4; Rectangle(d,r,3*d,3*r);
SetViewPort(d+1,r+1.3*d-1.3*r-1,ClipOn);
{Цикл вывода и закраски случайных многоугольников}
repeat
SetFillStyle(Random(12),Random(succ(GetMaxColor)));
Bar(Random(Ge tMaxX),Random(Ge tMaxY),
Random(Ge tMaxX),Random(Ge tMaxY));
until KeyPressed;
if ReadKey=#0 then d: = ord(ReadKey);
CloseGraph
end
end.

Процедура Ваr3D

Вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Заголовок:

Procedure Ваr3D (X1,Y1,X2,Y2,Depth: Integer; Top: Boolean);

Здесь:

  • X1… Y2 – координаты левого верхнего (X1, Y1) и правого нижнего (Х2, Y2) углов передней грани;
  • Depth – третье измерение трехмерного изображения ("глубина") в пикселях;
  • Top – способ изображения верхней грани.

Если параметр Top имеет значение True, верхняя грань параллелепипеда вычерчивается, в противном случае – не вычерчивается (этот вариант используется для изображения поставленных друг на друга параллелепипедов, см. следующий пример). В качестве значения этого параметра может использоваться одна из следующих констант, определенных в модуле Graph:

const
TopOn = True;
TopOff = False;

При вычерчивании используется текущий стиль линий (SetLineStyle) и текущий цвет (SetColor). Передняя грань заливается текущим стилем заполнения (SetFillStyle).

Процедура обычно применяется при построении столбиковых диаграмм. Следует учесть, что параллелепипед "прозрачен", т.е. за его незакрашенными гранями могут быть видны другие элементы изображения.

Следующая программа иллюстрирует различные аспекты применения процедуры Bar3D.

Uses Graph,CRT;
var
d, r, e: Integer;
begin
{Инициируем графику}
d: = Detect;
Ini-tGraph(d, r, ' ');
e: = GraphResult;
if e <> grOk then
WriteLn(GraphErrorMsg(e))
else
begin
{Столбик с верхней гранью:}
Bar3D (80, 100, 120, 180, 15, TopOn);
{Столбик без верхней грани:}
Ваr3D (150, 150, 190, 180, 15, TopOff);
{Этот столбик "стоит" на следующем и прозрачен:}
Bar3D (230, 50, 250, 150, 15, TopOn);
Bar3D (220, 150, 260, 180, 15, TopOn);
{У этого столбика нет верхней грани, и поэтому он не мешает поставленному на него сверху:}
Bar3D (300, 150, 340, 180, 15, TopOff);
SetLineStyle(3.0.1);
SetColor(Yellow);
SetFillStyle(LtSlashFill,Yellow);
Bar3D (300, 50, 340, 150, 15, TopOn);
if ReadKey=#0 then d: = ord(ReadKey);
CloseGraph;
end
end.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.