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. | {Заполнение цветом фона} {Сплошная штриховка} {Горизонтальная штриховка} {/// штриховка} {/// штриховка толстыми линиями} {\\\ штриховка толстыми линиями} {\\\ штриховка} {Заполнение прямой клеткой} {Заполнение косой клеткой} {Заполнение частой сеткой} {Заполнение редкими точками} {Заполнение частыми точками} {Тип задается пользователем} |
Процедуры
Arc(X, Y: Integer; U1, U2, R: Word) Строит дугу окружности текущим цветом с текущими параметрами линии. X, Y — координаты центра дуги, U1 — угол до начальной точки дуги, отсчитываемый против часовой стрелки от горизонтальной оси, направленной слева направо, U2 — угол до конечной точки дуги, отсчитываемый так же, как U1, R — радиус дуги.
Bar(X1, Y1, X2, Y2: Integer) Строит прямоугольник, закрашенный текущим цветом с использованием текущего стиля (орнамента, штриховки). X1, Y1, X2, Y2 — координаты левого верхнего и правого нижнего углов прямоугольника.
Bar3D(X1, Y1, X2, Y2: Integer; Glubina: Word; Top: Boolean) Строит параллелепипед, используя текущий стиль и цвет. X1, Y1, X2, Y2 — координаты левого верхнего и правого нижнего углов передней грани; Glubina — ширина боковой грани (отсчитывается по горизонтали), Top — признак включения верхней грани (если True — верхняя грань вычерчивается, False — не вычерчивается).
Circle(X, Y: Integer; R: Word) Рисует текущим цветом окружность радиуса R c центром в точке (X,Y).
ClearDevice Очищает графический экран, закрашивает его в цвет фона.
ClearViewPort Очищает выделенное графическое окно, закрашивает его в цвет фона.
CloseGraph Закрывает графический режим, т.е. освобождает память, распределенную под драйверы графики и файлы шрифтов, и восстанавливает текстовый режим работы экрана.
Ellipse(X, Y: Integer; U1, U2, XR, YR: Word) Рисует дугу эллипса текущим цветом; X, Y — координаты центра эллипса; U1, U2 — углы до начальной и конечной точек дуги эллипса (см. процедуру Arc); XR, YR — горизонтальная и вертикальная полуоси эллипса.
FillEllipse(X, Y: Integer; XR, YR: Word) Рисует заштрихованный эллипс, используя X,Y как центр и XR,YR как горизонтальную и вертикальную полуоси эллипса.
FillPoly(N: Word; Var PolyPoints) Рисует и штрихует многоугольник, содержащий N вершин с координатами в PolyPoints.
InitGraph(Var Driver, Mode: Integer; Path: String) Организует переход в графический режим. Переменные Driver и Mode содержат тип графического драйвера и его режим работы. Третий параметр определяет маршрут поиска графического драйвера. Если строка пустая (т.е. равна ''), считается, что драйвер находится в текущем каталоге.
Line(X1, Y1, X2, Y2: Integer) Рисует линию от точки X1, Y1 до точки X2,Y2.
LineTo(X, Y: Integer) Рисует линию от текущего указателя к точке X,Y.
MoveTo(X, Y: Integer) Смещает текущий указатель к точке X,Y.
OutTextXY(X, Y: Integer; TextString: String) Выводит текст в заданное место экрана.
PieSlice(X, Y: Integer; U1, U2, Radius: Word) Строит сектор круга, закрашенный текущей штриховкой и цветом заполнения. X, Y — координаты центра сектора круга; U1 и U2 — начальный и конечный углы сектора, отсчитываемые против часовой стрелки от горизонтальной оси, направленной вправо; Radius — радиус сектора.
PutPixel(X, Y: Integer; Color: Word) Выводит точку цветом Color с координатами X, Y.
Rectangle(X1, Y1, X2, Y2) Рисует контур прямоугольника, используя текущий цвет и тип линии. X1, Y1 — координаты левого верхнего угла прямоугольника, X2, Y2 — координаты правого нижнего угла прямоугольника.
Sector(X, Y: Integer; U1, U2, XR, YR: Word) Рисует и штрихует сектор эллипса радиусами XR, YR с центром в X, Y от начального угла U1 к конечному углу U2.
SetBkColor(Соlor: Word) Устанавливает цвет фона.
SetColor(Соlor: Word) Устанавливает основной цвет, которым будет осуществляться рисование.
SetFillStyle(Pattern, Color: Word) Устанавливает образец штриховки и цвет.
SetLineStyle(LineStile, Pattern, Thickness: Word) Устанавливает толщину и стиль линии.
SetTextStyle(Font, Direction, CharSize: Word) Устанавливает текущий шрифт, направление (горизонтальное или вертикальное) и размер текста.
SetViewPort(X1, Y1, X2, Y2: Integer; ClipOn: Boolean) Устанавливает прямоугольное окно на графическом экране. Параметр ClipOn определяет "отсечку" элементов изображения, не умещающихся в окне.
Функции
GetMaxX и GetMaxY Возвращает значения максимальных координат экрана в текущем режиме работы, соответственно, по горизонтали и вертикали.
GraphResult Возвращает значение GrOk, соответствующее коду 0, если все графические операции программы выполнились без ошибок, или возвращает числовой код ошибки (от —1 до —14).
ПРИМЕР: Эта программа демонстрирует возможности изображения линий в графическом режиме.
Program Lines;
Uses Graph, Crt; {подключение к программе библиотек Crt и Graph}
Var
Key: Char;
LineStyle: Word; {номер стиля рисования линии}
Style: String; {название стиля }
GrDriver, GrMode: Integer; {тип и режим работы графического драйвера}
GrError: Integer; {код ошибки графики}
BEGIN
GrDriver:= Detect; {автоопределение типа графического драйвера}
InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {установка графического режима}
GrError:= GraphResult;
If GrError<>GrOk then begin Writeln('Обнаружена ошибка!'); Halt
end;
SetBkColor(LightGray); SetColor(Red); {цвет фона и цвет рисования }
{------------------------------------------------------------}
OutTextXY(120, 100, 'Рисуем линию от точки (200,200) к точке (400,280)');
Line(200, 200, 400, 280);
Key:=ReadKey; {приостановление исполнения программы}
ClearViewPort; {очистка окна}
{-----------------------------------------------------------}
OutTextXY(240, 80, 'Рисуем ломанную');
Rectangle(110, 120, 520, 400); {рисование рамки }
MoveTo(Round(GetMaxX/2), Round(GetMaxY/2)); {указатель в центре окна}
Repeat {цикл прерывается нажатием любой клавиши}
LineTo(Random(GetMaxX-250)+120, Random(GetMaxY-210)+120);
Delay(100);
until KeyPressed;
Key:= ReadKey; ClearViewPort;
{-----------------------------------------------------------}
OutTextXY(190, 80, 'Mеняем стили рисования линий');
For LineStyle:= 0 to 3 do
Begin
SetLineStyle(LineStyle, 0, 1);
Case LineStyle of
0: Style:='Сплошная';
1: Style:='Точечная';
2: Style:='Штрихпунктирная';
3: Style:='Пунктирная'
end;
Line(120, 150+LineStyle*50, 430, 150+LineStyle*50);
OutTextXY(450, 145+LineStyle*50, Style);
end;
Key:=ReadKey; ClearViewPort; {очистка окна}
{-----------------------------------------------------------}
OutTextXY(180, 80, 'Меняем толщину рисования линий');
SetLineStyle(0, 0, 1); {толщина 1 пиксел }
Line(140, 200, 430, 200); OutTextXY(450, 195, 'Нормальная');
SetLineStyle(0, 0, 3); {толщина 3 пиксела}
Line(140, 250, 430, 250); OutTextXY(450, 245, 'Тройная');
ReadLn; CloseGraph; {закрытие графического режима} END.
ПРИМЕР: Эта программа рисует закрашенный прямоугольник, меняя случайным образом цвет, тип штриховки и высоту тона звукового сопровождения.
Program MusicColor;
Uses Crt, Graph; {подключение к программе библиотек Crt и Graph}
Var
GrDriver, GrMode: Integer; {тип и режим работы графического драйвера}
BEGIN
GrDriver:= Detect; {автоопределение типа графического драйвера}
InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {установка графического режима}
SetColor(White); {установка белого цвета рамки }
Rectangle(130, 130, 460, 370); {рисование рамки }
Randomize; {инициализация датчика случайных чисел}
Repeat {цикл прерывается нажатием любой клавиши}
Sound(Random(2000)); {изменение высоты звука }
Delay(Random(1000)); {задержка }
SetFillStyle(Random(4), Random(16)); {смена типа штриховки и цвета}
Bar(140, 140, 450, 360); {рисование закрашенного прямоугольника}
until KeyPressed;
NoSound; {отмена звука }
CloseGraph; ReadLn; {закрытие графического режима}
END.
ПРИМЕР: Эта программа рисует на экране звезду и закрашивает её, используя 12 типов штриховки.
Program Star;
Uses Crt, Graph;
{подключение к программе библиотек Crt и Graph}
Const { массив координат вершин многоугольника (звезды) }
TopsStar: Array[1..18] of Integer = (300, 125, 325, 225, 425, 250,
325, 275, 300, 375, 275, 275, 180, 250, 275, 225, 300, 125);
Var
i, j, GrDriver, GrMode: Integer;
BEGIN
GrDriver:= Detect;
InitGraph(GrDriver, GrMode, 'C:\TP\BGI'); {установка графического режима}
SetTextStyle(DefaultFont, HorizDir, 2); {установка шрифта,
направления и размера символов}
OutTextXY(220, 60, 'S T A R ');
SetTextStyle(DefaultFont, VertDir, 2);
OutTextXY(140, 150, 'S T A R ');
SetTextStyle(DefaultFont, VertDir, 2);
OutTextXY(500, 150, 'S T A R ');
i:=0;
Repeat
j:=i mod 12; { j - остаток от деления i на 12 }
SetFillStyle(j, Random(13)); { штриховка и фон }
FillPoly(9, TopsStar); {рисование и штриховка звезды}
Inc(i); {увеличение i на 1}
Delay(500)
until KeyPressed; {завершение цикла нажатием любой клавиши}
CloseGraph END.