ВУЗ:
Составители:
Рубрика:
103
begin
Init; {Вызов процедуры инициализации графического
режима}
SetBkColor(blue) ; {Установка синего цвета фона}
{Изображение движущегося круга}
for i:=1 to GetMaxX-100 do
begin
{Установка желтого цвета круга}
SetColor(Yellow);
SetFillStyle(1,Yellow);
{Вывод круга на экран}
FillEllipse (i+14, getMaxY div 2,50,50);
{Задержка}
Delay(50) ;
{Установка синего цвета круга}
SetColor (Blue);
SetFillStyle (1,blue);
{Стирание нарисованного круга}
FillEllipse (i+14,getMaxY div 2,50,50);
end;
CloseGraph;
end.
Однако непрерывная перерисовка приводит к мерцанию изображения.
Этого можно избежать, если
использовать третий способ изображения дви-
жущегося объекта.
Пример:
Uses Graph, CRT;
var Max, i:Integer;
p2:Pointer;
{Вставка описания процедуры инициализации}
{$1 D:/pas/init.pas}
begin
{Вызов процедуры инициализации графического
режима}
Init;
{Установка синего цвета фона и желтого цвета
круга}
SetColor(Yellow) ;
SetFillStyle(1,Yellow) ;
SetBkColor(blue) ;
Max: =getMaxY div 2;
{Вывод изображения круга}
FlllEllipse (80,80,50,50);
104
{Резервирование памяти для хранения изобра-
жения}
GetMem(p2, ImageSize(28,28,132,132));
{Запись изображения в оперативную память}
GetImage(28,28,132,132,p2^);
{Очистка экрана}
ClearViewPort;
{Изображение движущегося круга}
for i: =1 то GetMaxX-100 do
begin
{Вывод
изображения в видеопамять}
PutImage(28+i, Max, p2^, CopyPut);
Delay(50) ;
end;
CloseGraph;
end.
ImgeSize(X1,Y1,X2,Y2:Integer):Word- возвращает количество байтов,
необходимых для сохранения прямоугольной области экрана с координатами
X1,Y1,X2,Y2.
GetMem(Var p:Pointer; Size:Word )- выделяет Size байтов в динамиче-
ски распределяемой области памяти и возвращает в переменой р указатель на
выделенную область памяти.
Getlmage(X1,Y1,X2,Y2:lnteger;Var BitMap)- сохраняет изображение,
сформированное в прямоугольной области экрана с координатами
х1,у1,х2,у2, в области памяти, выделенной процедурой GetMem.
Putlmage(X,Y:lnteger;Var BitMap; Bitblt:Word)- преобразует и выводит
на экран изображение, записанное в двоичном коде. В параметрах X и Y ука-
зываются координаты левого верхнего угла прямоугольной области, в
которую будет выведено сохраненное в переменной BitMap изображение.
Параметр BitBIt, принимающий значения в диапазоне от 0 до 4, опре-
деляет способ наложения выводимого изображения на уже имеющееся
изображение. Если задана константа CopyPut=0, то
выводимое изображение
заменяет имеющееся.
Значения параметра BitBIt и соответствующие им логические операции
приведены в таблице.
begin {Резервирование памяти для хранения изобра- Init; {Вызов процедуры инициализации графического жения} режима} GetMem(p2, ImageSize(28,28,132,132)); SetBkColor(blue) ; {Установка синего цвета фона} {Запись изображения в оперативную память} {Изображение движущегося круга} GetImage(28,28,132,132,p2^); for i:=1 to GetMaxX-100 do {Очистка экрана} begin ClearViewPort; {Установка желтого цвета круга} {Изображение движущегося круга} SetColor(Yellow); for i: =1 то GetMaxX-100 do SetFillStyle(1,Yellow); begin {Вывод круга на экран} {Вывод изображения в видеопамять} FillEllipse (i+14, getMaxY div 2,50,50); PutImage(28+i, Max, p2^, CopyPut); {Задержка} Delay(50) ; Delay(50) ; end; {Установка синего цвета круга} CloseGraph; SetColor (Blue); end. SetFillStyle (1,blue); {Стирание нарисованного круга} ImgeSize(X1,Y1,X2,Y2:Integer):Word- возвращает количество байтов, FillEllipse (i+14,getMaxY div 2,50,50); необходимых для сохранения прямоугольной области экрана с координатами end; X1,Y1,X2,Y2. CloseGraph; end. GetMem(Var p:Pointer; Size:Word )- выделяет Size байтов в динамиче- ски распределяемой области памяти и возвращает в переменой р указатель на Однако непрерывная перерисовка приводит к мерцанию изображения. выделенную область памяти. Этого можно избежать, если использовать третий способ изображения дви- Getlmage(X1,Y1,X2,Y2:lnteger;Var BitMap)- сохраняет изображение, жущегося объекта. сформированное в прямоугольной области экрана с координатами Пример: х1,у1,х2,у2, в области памяти, выделенной процедурой GetMem. Uses Graph, CRT; Putlmage(X,Y:lnteger;Var BitMap; Bitblt:Word)- преобразует и выводит var Max, i:Integer; на экран изображение, записанное в двоичном коде. В параметрах X и Y ука- p2:Pointer; {Вставка описания процедуры инициализации} зываются координаты левого верхнего угла прямоугольной области, в {$1 D:/pas/init.pas} которую будет выведено сохраненное в переменной BitMap изображение. begin Параметр BitBIt, принимающий значения в диапазоне от 0 до 4, опре- {Вызов процедуры инициализации графического деляет способ наложения выводимого изображения на уже имеющееся режима} изображение. Если задана константа CopyPut=0, то выводимое изображение Init; {Установка синего цвета фона и желтого цвета заменяет имеющееся. круга} Значения параметра BitBIt и соответствующие им логические операции SetColor(Yellow) ; приведены в таблице. SetFillStyle(1,Yellow) ; SetBkColor(blue) ; Max: =getMaxY div 2; {Вывод изображения круга} FlllEllipse (80,80,50,50); 103 104
Страницы
- « первая
- ‹ предыдущая
- …
- 50
- 51
- 52
- 53
- 54
- …
- следующая ›
- последняя »