Краски, палитры, заполнения
Процедура 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.