Способы создания движущихся изображений
1-ый способ. Дважды рисуя одно и то же изображение: первый раз цветом, отличным от цвета фона, второй раз – цветом фона.
2-ой способ. Используя процедуры и функции работы с видеопамятью. Изображение движется с помощью операции NormalPut.
3-ий способ. Используя процедуры и функции работы с видеопамятью. Изображение движется с помощью операции XorPut.
Пример программы движения шарика, падающего с левого верхнего угла экрана по диагонали в правый нижний.
1-ый способ.
Program Demo_1;
Uses
Graph,Crt;
Var
Driver,Mode,i:Integer;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
SetBkColor(Black);
For i:=25 to 300 do{схема движения шарика}
Begin
{рисуем шарик}
SetColor(Red); {цвет границы – красный}
Circle(i,i,15); {рисуем контур шарика}
SetFillStyle(SolidFill,Blue);
{стиль заполнения – синий фон}
FloodFill(i,i,Red); {закрасили}
{стираем шарик, закрашивая его цветом фона}
SetFillStyle(SolidFill,Black);
{стиль заполнения – черный фон}
FloodFill(i,i,Red); {закрасили}
SetColor(Black); {цвет границы – черный}
Circle(i,i,15); {нарисовали черный контур
на черном фоне, шарик исчез}
Delay(3000); {пауза}
end;
{чтобы шарик остался на экране, нарисуем его еще раз}
SetColor(Red);
Circle(i,i,15);
SetFillStyle(SolidFill,Blue);
FloodFill(i,i,Red);
ReadLn;
CloseGraph;
End.
Ой способ.
Program Demo_2;
Uses Graph,Crt;
Var
P :Pointer; {определяем нетипизированный указатель}
Size :Word;
Driver,Mode,i:Integer;
Begin
Driver:=Detect;
InitGraph(Driver,Mode,'');
{рисуем закрашенный шарик}
SetBkColor(Black);
SetColor(Red);
Circle(30,30,15);
SetFillStyle(SolidFill,Blue);
FloodFill(30,30,Red);
size:=ImageSize(5,5,50,50); {определяет объем памяти,}
{необходимый для сохранения изображения}
GetMem(P,Size); {выделяет память в динамически}
{распределяемой области размером в size байт}
GetImage(5,5,50,50,P^); {запоминаем изображение}
for i:=5 to 300 do
Begin
PutImage(i,i,P^,NormalPut); {выводим изображение}
Delay(3000); {пауза}
end;
ReadLn;
CloseGraph;
End.
Дата добавления: 2015-04-15; просмотров: 770;