Мои Конспекты
Главная | Обратная связь


Автомобили
Астрономия
Биология
География
Дом и сад
Другие языки
Другое
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Металлургия
Механика
Образование
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Туризм
Физика
Философия
Финансы
Химия
Черчение
Экология
Экономика
Электроника

Способы создания движущихся изображений



 

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.

 

Ий способ.

Program Demo_3;

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^); {запоминаем изображение}

PutImage(i,i,P^,XorPut); {стираем изображение}

for i:=5 to 300 do

Begin

PutImage(i,i,P^, XorPut); {выводим изображение}

Delay(3000); {пауза}

PutImage(i,i,P^,XorPut); {стираем изображение}

end;

ReadLn;

CloseGraph;

End.

 




Поиск по сайту:







©2015-2020 mykonspekts.ru Все права принадлежат авторам размещенных материалов.