С для профессиональных программистов


Дублирование части экрана


Иногда бывает полезным скопировать часть экрана в другую область. Это легко выполнить используя функцию copy(), текст которой приводится ниже.

/* копирование части экрана в другую область */

void copy(startx,starty,endx,endy,x,y)

int startx,starty;                                    /* верхняя левая координата */

int endx,endy;                                       /* нижняя правая координата области

копирования */

int x,y;                         /* верхняя левая координата области,

куда будет проводится копирование */

int i,j;

unsigned char c;

for (;startx<endx;startx++,x++)

for (i=starty,j=y;i<endy;i++,j++)

c=read_point(startx,i); /* чтение точки */



mempoint(x,j,c); /* запись ее в новую область */

 

Как вы могли убедиться, при обращении к функциим в качестве ее аргументов указываются верхняя левая и нижняя правая координаты углов области, которая будет копироваться, и верхняя левая координаты, куда делается копия.

Вы также можете убедится, что с небольшими изменениями функцию copy() можно преобразовать в функцию move(). Функция move() пересылает указанную область в другую и чистит исходное место. Текст функции приводится ниже.

/* Пересылка части экрана в другую область */

void move(startx,starty,endx,endy,x,y)

int startx,starty; /* верхняя левая координата */

int endx,endy; /* нижняя правая координата области

пересылки */

int x,y; /* верхняя левая координата области,

куда будет проводится пересылка */

int i,j;

unsigned char c;

for (;startx<endx;startx++,x++)

for (i=starty;j=y;i<endy;i++,j++)

c=read_point(startx,i); /* чтение точки */

mempoint(startx,i,0); /* стирание старого

изображения */

mempoint(x,j,c); /* запись точки в новую область */

 



Содержание раздела