Построение простых графических изображений в среде програмирования Borland Pascal, страница 4

Функция

Назначение функции и формпльных параметров функции

GetBkColor : word;

Возвращает номер цвета в палитре, заданного последней процедурой SetColor.

GetMaxX : integer;

Возвращает максимальную координату Х для текущего драйвера в текущем режиме.

GetMaxY : integer;

Возвращает максимальную координату Y для текущего драйвера в текущем режиме.

GetX : integer;      GetY :integer;

Возвращают координаты X и Y соответственно текущей позиции на экране относительно установленного графического окна.

GraphResult : integer;

Возвращает код последней графической операции и сбрасывает его в 0.

TextHeight (TextString:string): word;

Возвращает высоту строки в пикселях. Где:

TextString–исходная строка.

TextWidth (TextString:string):word;

Возвращает длину строки в пикселях. Где:

TextString–исходная строка.

2. Разбор примера

Задание: Построить график функции у=sin(x) (см. рис.1).

Program Grafik;

Uses                                 {раздел описания библиотечных модулей}

Crt,Graph;                     {Graph-модуль работы в графическом режиме}

{Crt-работа с консолью для организации задержки}

Var                                  {раздел описания переменных}

X0,Y0,i,j:word;             {X0,Y0-координаты центра системы координат}

X,Y:real;                        {X,Y-текущие координаты}

Gd,Gm:integer;              {Gd-код требуемого графического драйвера}

{Gm-код графического режима}

Gp:string;                      {Gp-путь к графическому драйверу}

Begin                               {начало программы}

Gd:=detect;                    {автоматическое определение типа графического}                                               {драйвера}

Gp:='C:\Bp\Bgi';            {указан путь к графическому драйверу}

InitGraph(Gd,Gm,Gp);  {инициализация графического режима}

if graphresult<>grOk then

begin                           {при неправильном включении графического режима}

{выдает сообщение об ошибке}

writeln('ошибка включения графического режима');

Halt;

end;

X0:=GetMaxX div 2;     {абсцисса точки центра системы координат}

Y0:=GetMaxY div 2;     {ордината точки центра системы координат}

SetBkColor(Blue);         {установление текущего цвета фона экрана}

SetColor(White);           {установление текущего цвета}

ClearDevice;                  {очистка графического экрана}

Line(X0,150,X0,GetMaxY-150);      {рисование вертикальной оси координат}

Line(0,Y0,GetMaxX,Y0);                 {рисование горизонтальной оси координат}

for j:=0 to 10 do            {цикл формирования графика функции}

begin

MoveTo(0,Y0);                    {перемещение указателя в точку с координатами(0,Y0)}

for i:=0 to GetMaxX do                  {перебор всех значений Х}

begin

X:=i*4*pi/GetMaxX;

Y:=sin(X);

LineTo(i,Y0-Round(Y*40));        {рисование графика функции}

end;

end;                             {график функции нарисован}

for i:=0 to 8 do                    {цикл формирования масштабных отрезков по оси Х}

begin

Line(i*80,Y0-3,i*80,Y0+3);            {рисование масштабных отрезков по оси Х}

end;                            

for j:=0 to 2 do                    {цикл формирования масштабных отрезков по оси Y}

begin

Line(X0-3,200+j*40,X0+3,200+j*40);     {рисование масштабных отрезков по} {оси Y}

end;

Line(X0-3,156,X0,150);                           {рисование левой части стрелки на}

{оси Y}

Line(X0+3,156,X0,150);                           {рисование правой части стрелки на}                                                                     {оси Y}

Line(GetMaxX-6,Y0-3,GetMaxX,Y0);     {рисование верхней части стрелки}

{на оси Х}

Line(GetMaxX-6,Y0+3,GetMaxX,Y0);     {рисование нижней части стрелки}

{на оси Х}

OutTextXY (X0+6,150,'Y');                      {вывод на экран надписи оси Y}

OutTextXY (GetMaxX-8,Y0-10,'X');        {вывод на экран надписи оси Х}

OutTextXY (GetMaxX-80,Y0+50,'y=sin(x)');     {вывод на экран надписи гра}

{фика функции}

OutTextXY (X0+5,Y0+5,'0');                    {вывод на экран надпись центра}

{осей координат}

Delay(10500);                                           {организация задержки изображения}

CloseGraph;                 {закрытие графического режима}

Readln;