Управление экраном в графическом режиме, страница 3

          Процедура Bar(x1, x2, y1, y2)  штрихует, но не обводит прямоугольную область экрана текущим образцом штриховки и текущим цветом, заданным в процедуре SetFillStyle; x1, x2, y1, y2 – координаты левого верхнего и правого нижнего угла прямоугольной области.

          Процедура FillEllipse (x, y, <начальный угол>, <конечный угол>, Rx, Ry) и Sector (x, y, <начальный угол>, <конечный угол>, Rx, Ry) обводит линией эллипс и эллиптический сектор соответственно, заданной процедурами SetLineStyle и SetColor, и заполняет штриховкой, заданной процедурой SetFillStyle.

          Процедура OutText (<текст>) выводит текст, начиная с текущего положения указателя.

          Процедура OutTextXY (<текст>) выводит текст, начиная с заданного места; x, y - выражения типа integer, задающие координаты точки вывода.

          Процедура SetTextStyle (<шрифт>, <направление>, <размер>) устанавливает стиль выводимого текста; <шрифт>, <направление>, <размер> - выражение типа word, означающие коды соответственно шрифта, направления размера шрифта. Для каждого шрифта допустимо десятикратное изменение размера, код размера может иметь значение от 1 до 10.

Таблица 3 – Коды шрифтов и направления.

Коды шрифтов

Коды направления

0 – стандартный

0 – слева на право

1 – типа триплекс

1 – снизу вверх

2 – уменьшенный

3 – прямой

4 – готический

Примеры программ

Программа 1. Выводит точки и линии со случайными координатами, цвет также выбирается случайно.

Program pix;

uses Graph, crt;

var d, r, e, i:integer;

                x, y, x1, y1 : integer;

begin

d:= detect; InitGraph(d, r, ‘c:\tp\bgi’); e:=GraphResult;

If e<> grOk then writeln(GraphErrorMsg(e))

else

repeat

x:=random(GetMaxX); y:= random(GetMaxY);

PutPixel(x, y, random(15));

x:=random(GetMaxX); y:= random(GetMaxY);

x1:=random(GetMaxX); y1:= random(GetMaxY);

SetColor(random(15));

line(x, y, x1, y1); delay (500);

until KeyPressed; end; end.

Программа 2. Выводит на экран линии различного вида и цвета.

Program pix;

uses Graph, crt;

var d, r, e, j, x, y, x1, y1:integer;

     i : word;

begin

d:= detect; InitGraph(d, r, ‘c:\tp\bgi’); e:=GraphResult;

If e<> grOk then writeln(GraphErrorMsg(e))

else

   begin

j:=8;

for i:=1 to 3 do begin

j:=j+1; SetColor(j); SetLineStyle(i, 0, 1);

line(10, trunc(i*20+100), 200, trunc(i*20+100));

SetLineStyle(i, 0, 3);

line(300, trunc(i*20+100), 480, trunc(i*20+100));

end;

   end;

end.

Программа 3. Выводи параллелепипеды.

Program pix;

uses Graph, crt;

var d, r, e:integer;

begin

d:= detect; InitGraph(d, r, ‘c:\tp\bgi’); e:=GraphResult;

If e<> grOk then writeln(GraphErrorMsg(e))

else

  begin

Bar3D(80, 100, 120, 180, 15, true);

Bar3D(150, 150, 190, 180, 15, false);

Bar3D(230, 50, 250, 150, 15, true);

Bar3D(220, 150, 260, 180, 15, true);

Bar3D(300, 150, 340, 180, 15, false);

Bar3D(300, 50, 340, 150, 15, true);

readln; readln;

CloseGraph;

   end; end.

Программа 4. Рисует окружность и штрихует ее различными видами штриховки.

Program pix;

uses Graph, crt;

var d, r, e, i, x, y, x1, y1:integer;

begin

d:= detect; InitGraph(d, r, ‘c:\tp\bgi’); e:=GraphResult;

If e<> grOk then writeln(GraphErrorMsg(e))

else begin

  repeat

for i:=1 to 11 do begin

SetFillStyle(i, i); x:=320; y:=240;

SetColor(10); circle(x, y, 100);

FloodFill(x, y, 10);

delay(1000); ClearDevce; end;

  until KeyPressed; CloseGraph;

end; end.

Пример 5. Использование процедуры DrawPoly (вычерчивается график функции).

Program Map_table;

uses Grapht;

var

tm: string;

d, e, k, l, j:integer;

r1, x1, y1: real;

x: array [0..100] of real;

m: array [0..600] of PointType;

i: word;

begin

          x[0]:=0.1;

for i:=1 to 100 do x[i]:=4*x[i-1]*(1-x[i-1]);

d:= detect; InitGraph(d, r, ‘c:\tp\bgi’); e:=GraphResult;

If e<> grOk then writeln(GraphErrorMsg(e))

else   begin

line(0, 0, 0, GetMaxY); line( 0, GetMaxY, GetMaxX, GetMaxY);

OutTextXY(GetMaxX-20, GetMaxY-20,’i’); j:=0;

     for i:=1 to  100 do begin

    y1:=x[i+j];

   with m[i] do begin

x:=trunc(i*GetMaxX/100); y:=trunc(GetMaxY-y1*GetMaxY); circle(x, y, 1);

   end;end;

SetColor(10); DrawPoly(101,m);

end; readln; readln;

CloseGraph; end.