LtSlashFill -диагональное заполнение (/ / /); LtBkSlashFill - обратное диагональное
заполнение (\ \ \); XhatchFill – косое клетчатое заполнение.
Процедура SetLineStyle(Style,Pattern,color); задаёт стиль, палитру и толщину линий.
Стили: Solidln - сплошная; Dotted - точечная; Dashed - пунктирная; Centerln -
штрихпунктирная. Толщина линий: NormWidth – нормальная; ThickWidth – толстая.
Параметр Pattern=0.
Процедура OutTextXY(x,y,s); Выводит текстовую строку s начиная с точки с
координатами (x,y).
Простейшие примеры работы с процедурами и функциями графического режима
содержатся в справочной системе Турбо Паскаль. Полный список констант, типов,
процедур и функций модуля GRAPH содержится также в файле Graph.int.
17. Анимация изображений в Паскале
Общим принципом создания движущихся изображений в Паскале является рисование
какого-либо объекта, закраска его цветом фона (стирание) и последующее рисование уже
с новыми координатами. Необходимо отметить, что эффект движения возникает не
всегда. Если частота появления картинки на экране мала, то наблюдается перемещение
мигающего объекта. Если объект перемещается слишком быстро, то человеческий глаз не
способен воспринять всей траектории движения. На восприятие еще накладывается
частота обновления кадра монитора. Может возникать ситуация, когда мерцание
наблюдается по этой причине. Продолжительность нахождения на экране прорисованного
объекта должна быть максимальна, а продолжительность нахождения стертого
минимальна.
Ниже приведена программа на Паскале, в которой организовано перемещение по экрану
окружности. В данном случае частоту обновления изображения можно регулировать
варьированием продолжительности задержки (time) и величины перемещения (delta), а
также размером объекта - переменная radius (чем меньше радиус окружности, тем меньше
времени необходимо на ее прорисовку). Перед выполнением примера скопируйте в свой
каталог драйвер egavga.bgi;
Program Multik;
Uses Graph, Crt;
Var
x,y,dy,dx,time,delta,radius,Gd,Gm: integer;
Begin
Gd := Detect;
InitGraph(Gd,Gm,''); {Включаем графический режим}
if GraphResult <> 0 then Halt(1);
Rectangle(0,0,GetMaxX,GetMaxY); {рисуем рамку вокруг экрана}
x:=100; y:=100; { начальные координаты центра окружности}
delta:=10; { величина перемещения }
dx:=delta; { величина перемещения по х }
dy:=delta; { величина перемещения по у }
radius:=15 ; { радиус окружности }
time:=10000; { продолжительность задержки }
Repeat
SetColor(15); { задание белого цвета для линий }
Circle(x,y,radius);{ рисование белой окружности}
{ смена направления движения при достижении края экрана }
{ и включение звукового сигнала }