Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции+Pascal.doc
Скачиваний:
28
Добавлен:
02.12.2018
Размер:
647.17 Кб
Скачать

11.6 Отображение точки на экране

Какие бы изображения ни выводились на экран, все они построены из точек. Для отображения точки (пиксела) на экране используется процедура

PutPixel(X,Y,Color)

где X и Y – координаты точки на экране, Color – ее цвет.

11.7 Определение параметров пикселов

Функция

GetPixel(X,Y)

определяет номер цвета пиксела с координатами X,Y.

Пример1. Заполнение экрана множеством точек различного цвета.

USES Graph;

VAR

Gd,Gm:Integer;

Color:Word;

X,Y:Word;

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

End;

Color:=0;

Randomize;

Repeat

{звуковой сигнал, если цвет пикселов совпадает}

If Color=GetPixel(X,Y) Then Write(#7);

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

X:=Random(GetMaxX);

Y:=Random(GetMaxY);

PutPixel(X,Y,Color); {вывод пиксела}

Inc(Color); {изменение цвета}

{проверка, не превышает ли значение цвета максимально допустимого}

If Color=GetMaxColor Ten Color:=0;

Until KeyPressed; {пока не нажата клавиша}

CloseGraph;

End.

Пример 2. Вывести N точек в пределах окружности радиуса R.

USES CRT,GRAPH;

VAR

GD,GM:integer;

A:Real;

R:Integer;

X,Y:integer;

Color:Word;

BEGIN

GD:=detect;

InitGraph(GD,GM,'c:\tp7\bgi');

IF GraphResult<>0 THEN HALT(1);

ClearDevice;

SetBkColor(1);

Color:=1;

Repeat

A:=Random(628)/100; {Угол отклонения в радианах}

R:=Random(80); {Радиус}

Y:=Trunc(R*Sin(A));

X:=Trunc(R*Cos(A));

PutPixel(GetMaxX Div 2 +X,GetMaxY Div 2 + Y,Color);

Inc(Color);

If Color=16 Then Color:=1;

Until KeyPressed;

CloseGraph;

END.

11.8 Отображение отрезков прямых линий

Процедура вывода отрезка прямой на экран

Line(X1,Y1,X2,Y2:Integer);

X1,Y1 - координаты начальной точки линии

X2,Y2 - координаты конечной точки линии

Процедура

LineTo(X,Y)

строит отрезок из текущего положения указателя до точки с координатами X,Y.

Процедура

LineRel(dX,dY)

строит отрезок от точки текущего положения указателя до точки (CPX+dX,CPY+dY), где CPX и CPY – текущие координаты CP.

Пример. Заполнение экрана множеством отрезков различных цветов.

USES Graph,Crt;

VAR

Gd,Gm:Integer;

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

Randomize;

Repeat

SetColor(Random(15)); {случайный выбор цвета}

{построение линий с использованием различных процедур}

Line(Random(GetMaxX),Random(GetMaxY),GetX,GetY);

LineTo(Random(GetMaxX),Random(GetMaxY));

LineRel(50,-50)

Until KeyPressed;

CloseGraph;

End.

11.9 Вычерчивание линий различных стилей

Возможно вычерчивать линии самых различных стилей

SetLineStyle(LineStyle,Pattern,Thickness)

LineStyle – задает тип строки

Pattern – шаблон (если параметр LineStyle не равен 4, то Pattern не используется и задается равным нулю)

Thickness – задает толщину линии.

Значение

Характеристики линий

0

Сплошная

1

Пунктирная

2

Штрих-пунктирная

3

Штриховая

4

Заданная пользователем

1

Нормальной толщины

3

Большой толщины

Например. Задание стиля линии и построение отрезка.

USES Graph,Crt;

VAR

Gd,Gm:Integer;

Ch:Char;

Begin

Gd:=Detect;

{Инициализация графического режима}

InitGraph(Gd,Gm,'C:\TP7\BGI');

{Обработка ошибки инициализации}

IF GraphResult<>0 THEN Begin

WriteLn(‘Ошибка инициализации’);

HALT(1);

End;

Randomize;

Repeat

ClearDevice; {чистка экрана}

{определение типа линии}

SetLineStyle(3,0,1);

Line(1,1,GetMaxX,GetMaxY);

Ch:=ReadKey;

Until Ch=#27;

CloseGraph;

End.

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