void far getimage(int left, int top, int right, int bottom, void far *buf)
Прототип:
Описание:
Функция getimage() копирует часть графического экрана с левым верхним углом в точке left, top и с правым нижним углом в точке с координатами right, bottom в область памяти, на которую указывает параметр buf.
Для того, чтобы определить необходимое число байт для хранения изображения, надо использовать функцию imagesize(). Изображение, сохраненное с использованием функции getimage(), может быть выведено на экран с использованием функции putimage().
Пример:
Следующая программа копирует прямоугольник с двумя диагональными линиями в новое место на экране: /* данная программа демонстрирует, как можно двигать изображение с помощью getimage(), imagesize() и putimage() */ #include <conio.h> #include <graphics.h> #include <stdlib.h> void box (int, int, int, int, int); int main(void) { int driver, mode; unsigned size; void *buf; driver = DETECT; /* автоопределение */ mode = 0; initgraph(&driver, &mode, "c:\\bc5\\bgi"); box (20, 20, 200, 200, 15); setcolor(RED); line(20, 20, 200, 200); setcolor(GREEN); line(20, 200, 200, 20); getch(); /* перемещение изображения */ /* сначала получение размера изображения */ size = imagesize(20, 20, 200, 200); if (size != 0xffff) { /* выделение памяти для изображения */ buf = malloc(size); if(buf) { getimage(20, 20, 200, 200, buf); putimage(100, 100, buf, COPY_PUT); putimage(300, 50, buf, COPY_PUT); } } outtext("Press a key."); getch (); restorecrtmode(); return 0; } /* вывод прямоугольника по имеющимся координатам двух углов */ void box (int startx, int starty, int endx, int endy, int color) { setcolor(color); line(startx, starty, startx, endy); line (startx, starty, endx, starty); line(endx, starty, endx, endy); line(endx, endy, startx, endy); }
