Дуги, окружности, эллипсы
Circle (x,y,радиус) – процедура вычерчивает окружность с центром в точке (x,y) заданного радиуса.
Arc (x,y,начальный_угол,конечный_угол,радиус) – процедура чертит дугу окружности с центром в точке (x,y) от начального до конечного угла заданного радиуса. Углы отсчитываются против часовой стрелки и указываются в градусах. Нулевой угол соответствует горизонтальному направлению вектора слева направо.
GetArcCoords (Coords) – процедура возвращает координаты трех точек: центра, начала и конца дуги. Coords – переменная типа ArcCoordsType, которая определена в модуле Graph следующим образом:
Type
ArcCoordsType=record
x, y: Integer; {координаты центра}
Xstart, Ystart: Integer; {начало дуги}
Xend, Yend: Integer {конец дуги}
end;
Ellipse (x,y,начальный_угол, конечный_угол, x_радиус, y_радиус) – процедура вычерчивает эллипсную дугу с центром в точке (x,y) от начального до конечного угла заданными горизонтальным x-радиусом и вертикальным y-радиусом.
Краски, палитра, заполнение
SetColor (цвет) – процедура устанавливает цвет выводимых линий и символов. Цвет определяется одной из следующих констант, находящихся в модуле Graph:
Const
Black=0; {черный}
Blue=1; {синий}
Green=2; {зеленый}
Cyan=3; {голубой}
Red=4; {красный}
Magenta=5; {сиреневый}
Brown=6; {коричневый}
LightGray=7; {светло-серый}
DarkGray=8; {темно-серый}
LightBlue=9; {голубой}
LightGreen=10; {светло-зеленый}
LightCyan=11; {светло-голубой}
LightRed=12; {светло-красный}
LightMagenta=13; {светло-сиреневый}
Yellow=14; {желтый}
White=15; {белый}
GetColor – функция возвращает значение типа Word, содержащее код текущего цвета.
GetMaxColor – функция возвращает значение типа Word, содержащее максимальный доступный код цвета, который можно использовать для обращения к SetColor.
SetBkColor (цвет) – процедура устанавливает цвет фона.
GetBkColor – функция возвращает значение типа Word, содержащее текущий цвет фона.
SetPalette (n, Color) – процедура заменяет один из цветов палитры на новый цвет. Здесь n – номер цвета в палитре, Color – номер вновь устанавливаемого цвета.
GetPalette (PaletteInfo) – процедура возвращает размер и цвета текущей палитры. Здесь PaletteInfo – переменная типа PaletteType, возвращающая размер и цвета палитры. В модуле Graph определена константа
Const
MaxColors=15;
и тип
Type
PaletteType=record
Size:Word; {количество цветов в палитре}
Colors: array [0..MaxColors] of ShortInt
{номера входящих в палитру цветов}
end;
SetAllPalette (Palette) – процедура изменяет одновременно несколько цветов палитры. Параметр Palette в заголовке процедуры описан как нетипизированный. Первый байт этого параметра должен содержать длину n палитры, остальные n байт номера вновь устанавливаемых цветов в диапазоне от –1 до MaxColors. Код –1 означает, что соответствующий цвет исходной палитры не меняется.
GetPaletteSize – функция возвращает значение типа Integer, содержащее размер палитры (максимальное количество доступных цветов).
GetDefaultPalette (Palette) – процедура возвращает структуру палитры, устанавливаемую по умолчанию. Здесь Palette – переменная типа PaletteType, в которой возвращаются размер и цвета палитры.
SetFillStyle (тип_заполнения, цвет) – устанавливает стиль заполнения фигур и цвет. Тип заполнения определяется одной из следующих констант, находящихся в модуле Graph:
Сonst
EmptyFill=0; {заполнение фоном (узор отсутствует)}
SolidFill=1; {сплошное заполнение}
LineFill=2; {заполнение - - - - }
LtSlashFill=3; {заполнение /////}
SlashFill=4; {заполнение утолщенными //////}
BkSlashFill=5 {заполнение утолщенными \\\\\\}
LtBkSlashFill=6; {заполнение \\\\\\\\\}
HatchFill=7; {заполнение ++++++++}
XHatchFill=8; {заполнение ххххххх}
InterleaveFill=9; {заполнение в прямоугольную клеточку}
WideDotFill=10; {заполнение редкими точками}
CloseDotFill=11; {заполнение частыми точками}
UserFill=12; {узор определяется пользователем}
Если тип заполнения имеет значение UserFill, то рисунок узора определяется программистом путем обращения к процедуре SetFillPattern.
SetFillPattern (Pattern,цвет) – процедура устанавливает образец рисунка и цвет штриховки. Здесь Pattern – выражение типа FillPatternType устанавливает образец рисунка для UserFill в процедуре SetFillStyle.
Образец рисунка задается в виде матрицы из 8´8 пиксел и может быть представлен массивом из 8 байт следующего типа:
Type
FillPatternType=array[1..8] of Byte;
Каждый разряд любого из этих байтов управляет светимостью пиксела, причем первый байт определяет 8 пиксел первой строки на экране, второй байт – 8 пиксел второй строки и т.д.
Пример двух образцов заполнения. Для каждых 8 пиксел приводится шестнадцатиричный код соответствующего байта.
Образец 1 | Значение байта | Образец 2 | Значение байта | ||||||||||||||
$49 | $00 | ||||||||||||||||
$92 | $18 | ||||||||||||||||
$49 | $24 | ||||||||||||||||
$92 | $42 | ||||||||||||||||
$49 | $42 | ||||||||||||||||
$92 | $24 | ||||||||||||||||
$49 | $18 | ||||||||||||||||
$92 | $00 |
Закрашенный квадрат соответствует 1, незакрашенный – 0. Таким образом, получаем двоичное представление шестнадцатеричного числа, например первая строка первого образца: 01001001 – двоичное представление шестнадцатеричного числа 49.
Пример использования процедуры SetFillPattern. Программа рисует на экране 2 прямоугольника и заполняет их указанными образцами.
Uses
Graph,Crt;
Const
Patt1:FillPatternType=
($49,$92,$49,$92,$49,$92,$49,$92);
Patt2:FillPatternType=
($00,$18,$24,$42,$42,$24,$18,$00);
Var
Driver, Mode:Integer;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
SetFillStyle(UserFill,White);
{левый верхний квадрат}
SetFillPattern(Patt1,1);
Bar(0,0, GetMaxX div 2, GetMaxY div 2);
{правый нижний квадрат}
SetFillPattern(Patt2,2);
Bar(GetMaxX div 2,GetMaxY div 2,GetMaxX,GetMaxY);
ReadLn;
CloseGraph;
End.
GetFillPattern (Pattern) – процедура возвращает образец заполнения, установленный ранее процедурой SetFillPattern. Pattern – переменная типа FillPatternType, в которой возвращается образец заполнения. Если программа не устанавливала образец с помощью процедуры SetFillPattern, массив Pattern заполняется байтами со значением 255 ($FF).
GetFillSettings (PattInfo) – процедура возвращает текущий стиль заполнения. Здесь переменная PattInfo типа FillSettingsType, в которой возвращается текущий стиль заполнения. В модуле Graph определен тип:
Type
FillSettingsType=record
Pattern :Word; {образец}
Color :Word {цвет}
end;
FloodFill (x,y,цвет_границы) – заполняет произвольную замкнутую фигуру, используя текущий стиль заполнения до границы заданного цвета, (x,y) – произвольная точка внутри фигуры. Если фигура незамкнута, заполнение «разольется» по всему экрану.
Пример. Демонстрируем заливку маленького прямоугольника:
SetFillStyle(LtSlashFill,GetMaxColor);
Rectangle(0,0,8,20);
FloodFill(1,1,GetMaxColor);
Bar (x1,y1,x2,y2) – процедура заполняет прямоугольную область экрана текущим заполнителем. Здесь (x1,y1) – координаты левого верхнего, (x2,y2) – правого нижнего углов закрашиваемой области.
Bar3d (x1,y1,x2,y2,Depth,Top) – процедура вычерчивает трехмерное изображение параллелепипеда и закрашивает его переднюю грань. Здесь (x1,y1) – координаты левого верхнего, (x2,y2) – правого нижнего углов передней грани, Depth – переменная типа Integer, третье измерение трехмерного изображения («глубина») в пикселах, Top – переменная типа Boolean, способ изображения верхней грани. Если параметр Top имеет значение True, верхняя грань параллелепипеда вычерчивается, в противном случае – не вычерчивается. В качестве значение этого параметра может использоваться одна из следующих определенных в модуле Graph констант:
Const
TopOn =True;
TopOff=False;
При вычерчивании используется текущий стиль линий (SetLineStyle) и текущий цвет (SetColor). Передняя грань заливается текущим стилем заполнения (SetFillStyle).
Процедура обычно применяется для построения столбиковых диаграмм. Следует учесть, что параллелепипед «прозрачен», т.е. за его незакрашенными гранями могут быть видны другие элементы изображения.
FillPoly (n,Coords) – процедура обводит линией и закрашивает замкнутый многоугольник. Здесь n – количество вершин замкнутого многоугольника, Coords – переменная типа PoinType, содержащая координаты вершин. Координаты вершин задаются парой значений типа Integer: первое определяет горизонтальную, второе – вертикальную координаты. Для них можно использовать следующий определенный в модуле тип:
Type
PointType=record
x,y:Integer
end;
Стиль и цвет линий контура задаются процедурами SetLineStyle и SetColor, тип и цвет заливки – процедурой SetFillStyle.
|
Uses Graph,Crt; Type Tmas=array [1..7] of PointType; {определяем массив записей вершин фигуры} Const mas:Tmas= ((x:200;y:50), (x:250;y:100), (x:250;y:200), (x:200;y:250), (x:150;y:200), (x:150;y:100), (x:200;y:50)); Var Driver, Mode:Integer; Begin Driver:=Detect; InitGraph(Driver,Mode,''); {стиль линии} SetLineStyle(SolidLn,0, ThickWidth); {стиль заполнения, синий фон} SetFillStyle(SolidFill,Blue); {цвет границы – красный} SetColor(Red); FillPoly(7,mas); ReadLn; CloseGraph; End. | Ã |
FillEllipse (x,y,x_радиус,y_радиус) – процедура обводит линией и заполняет эллипс. Здесь (x,y) – координаты центра, x_радиус,y_радиус – горизонтальный и вертикальный радиусы эллипса в пикселах. Эллипс обводится линией, заданной процедурами SetLineStyle и SetColor, и заполняется с использованием параметров, установленных процедурой SetFillStyle.
Sector (x,y, начальный_угол, конечный_угол, x_радиус, y_радиус) – вычерчивает и заполняет эллипсный сектор с центром в точке (x,y) от начального до конечного угла заданными x_радиусом по горизонтали и y-радиусом по вертикали.
PieSlice (x,y,начальный_угол,конечный_угол,радиус) – вычерчивает и заполняет сектор окружности с центром в точке (x,y) от начального до конечного угла заданным радиусом. Сектор обводится линией, заданной процедурами SetLineStyle и SetColor и заполняется с помощью параметров, определенных процедурой SetFillStyle. Процедуру удобно использовать при построении круговых диаграмм.
Дата добавления: 2015-04-15; просмотров: 771;