Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB3bak.DOC
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
367.62 Кб
Скачать

Простейшие графические процедуры и функции

После инициализации графического режима экран очищается и можно использовать процедуры рисования.

Procedure SetBkColor(N: Word); - установить цвет "N" для пикселов фона (по умолчанию установлен черный цвет фона).

Procedure SetColor(N: Word); - установить цвет "N" для выводимых линий (По умолчанию установлен белый цвет).

Procedure PutPixel(X, Y: Integer, N: Word); - высветить цветом "N" пиксел с координатами X, Y.

Function GetMaxColor: Integer; - функция возвращает максимальный номер цвета палитры (цвет задается аналогично цветам текста в модуле Crt).

Procedure Circle(X, Y:Integer, R:Word); - строит текущим цветом окружность с центром X, Y и радиусом R.

Procedure Line(x1, y1, x2, y2: Integer); - строит текущим цветом отрезок прямой линии от точки с координатами x1, y1 к точке с координатами x2, y2.

Procedure Rectangle(x1, y1, x2, y2: Integer); - строит текущим цветом прямоугольник с левым верхним углом в точке с координатами x1, y1 и правым нижним углом в точке с координатами x2, y2.

Function GetPixel(X, Y: Integer): Word; - функция возвращает цвет пиксела с координатами X, Y.

Procedure ClearDevice; - очищает графический экран, закрашивает его цветом фона устанавливает указатель текущей позиции в точку с координатами (0, 0)

Пример 1.

Uses Crt, Graph;

var { раздел описаний}

ch: char;

Gd, Gm, Gx, Gy, xc, yc: integer;

Begin

Gd:=Detect;

InitGraph(Gd,Gm,'C:\tp\bgi'); (* инициализация графики *)

Randomize;

Gx:=GetMaxX; Gy:=GetMaxY;

{----------------------------------------------------------

Фрагмент N 1 программы "небо в алмазах" ( рисование пикселов ).

--------------------------------------------------------------}

SetColor(0);

Repeat

i:= 9 + random(7);

xc:= random(Gx);

yc:= random(Gy);

PutPixel(xc, yc, i);

Circle(xc, yc, 3)

Until KeyPressed;

{----------------------------------------------------}

While KeyPressed do ch:= ReadKey; { очистка буфера клавиатуры }

CloseGraph; { закончить работу в графическом режиме }

End.

После инициализации графики определяются переменные Gx, Gy - максимальные значения координат по осям X, Y. Назначается черный цвет для линий, которые будут выводиться. Затем в цикле повторяется до нажатия любой клавиши высвечивание точек (пикселов) с номерами цвета "i" от 9 до 15 и координатами xc, yc. Значения координат точек и номеров цвета определяются из заданного диапазона функцией Random. Чтобы точки не "забивали" экран, некоторые из них "гасятся" окружностью радиусом 3 пикселя с центром в появившейся точке.

Пример 2. Построение функции Y=Abs(Sin(x)).

program Funk;

uses Graph; (*подключение графической библибтеки*)

var x, y,h,xk,xn:real;

gd,gm:Integer;

function f(x:real):real; (* подпрограмма-функция вычисления abs(sin(x)) *)

begin

f:=abs(sin(x))

end;

Begin (*начало главной программы*)

gd:=Detect;

Initgraph(gd,gm,'c:\bp\bgi'); (*включение графического режима*)

xn:=-10; xk:=10; (*начало и конец по оси абсцисс х*)

h:= (xk-xn)/1000; (*величина шага приращения аргумента*)

x:=xn;

while x<xk do

begin

y:=f(x); (*вычисление функции в точке*)

putpixel(round(x*30+300),round(200-y*200),white); {строим точку на экране}

x:=x+h (*переход к следующей точке*)

end;

readln

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]