и на это место помещает
Константа | Значение | Операция | Пояснения |
NormalPut | 0 | Замена существующего на копию | Стирает часть экрана и на это место помещает копию |
XorPut | 1 | Исключительное или | Рисует сохраненный образ или стирает ранее нарисованный, сохраняя фон |
OrPut | 2 | Объединительное или | Накладывает сохраненный образ на существующий |
AndPut | 3 | Логическое и | Объединяет сохраненный образ и уже существующий на экране |
NotPut | 4 | Инверсия изображения | То же самое, что и 0, только копия выводится в инверсном виде |
Упражнение 2. Изучить программу, которая рисует звездное небо и перемещает на его фоне рисунок НЛО. Проверить действие программы.
program NLO;
uses crt, graph;const
k=20; Pause=50;
var
gd, gm, xmin, xm, ymin, ym, x, y, tx, ty, rx, ry, size, i, dx, dy, width, height: integer;
sauser:Pointer;
begin
Randomize;
gd:= detect; initgraph(gd, gm, ‘путь к драйверу’);
SetTextStyle(0, 0, 2); OutTextXY(50, 10, ‘Демонстрация движения НЛО’);
{Рисуем НЛО}
x:=R*5; y:=R*2; xm:=GetmaxX- 5; ym:=GetmaxY-25;
Ellipse(x, y, 0, 360, R, R div 3+2);
Ellipse(x, y-4, 190, 357, R, R div 3);
Line(x + 7, y - 6, x + 10, y - 12);
Line(x -7, y - 6, x + 10, y - 12);
Circle(x + 10, y - 10, 2);
Circle(x -10, y - 10, 2);
FloodFill(x+1, y+4, White);
{определяем габариты НЛО и помещаем в специальную динамическую переменную}
Tx:= x-R; Ty:=y-14; Rx:;=x+R; Ry:=y+R div3 +3;
Width:=Rx-Tx+1; Size:=ImageSize(Tx, Ty, Rx, Ry);
GetMem(sauser, Size);
GetImage(Tx, Ty, Rx, Ry, sauser^);
{стираем построенное изображение}
PutImage(Tx, Ty, sauser^, XorPut);
{рисуем звездное небо}
SetStyle(1, blue); {установить стиль и цвет закраски голубое небо}
SetColor(White);
{начертить прямоугольник и открыть окно}
Rectangle(xmin, ymin, GetmaxX, GetmaxY);
SetViewPort(xmin, ymin, GetmaxX, GetmaxY, ClipOn);
FloodFill(xmin+1, ymin+1, White);
For i:=1 to 500 do {нарисовать 500 звезд белого цвета}
PutPixel(Random(GetmaxX), Random(GetmaxY- ymin), 15);
{задаем начальное положение НЛО}
x:=xm div 3 – xmin; y:=ym div 3 – ymin; dx:=6; dy:=6;
Содержание Назад Вперед