Функция Запоминает в битовый образ некоторой области эк-
рана.
Синтаксис #include
void far getimage(int left, int top, int
right,int bottom, void
far *bitmap);
Файл, содержащий graphics.h
прототип
Описание getimage копирует образ c экрана в память.
left, top, right и bottom определяют область эк-
рана прямоугольной формы, которая будет скопиро-
вана. bitmap указывает на область в памяти, куда
записывается битовый образ. Первые два слова этой
области задают ширину и высоту прямоугольника,
оставшиеся определяют сам образ.
Возвращаемое Нет.
значение
Переносимость Функция уникальна для Turbo C++. Она работает
только на компьютерах IBM PC и совместимых с ни-
ми, оснащенных дисплейными адаптерами, поддержи-
вающими графический режим.
Смотрите также imagesizeputimageputpixel
Пример:
#include
#include
#include
#include
#include
void save_screen(void far *buf[4]);
void restore_screen(void far *buf[4]);
int maxx,maxy;
int main(void)
{
int graphdriver = DETECT, gmode, errorcode;
void far *ptr[4];
/* автоматическое определение драйвера и режима */
initgraph(&graphdriver,&gmode,"");
/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk) /* если ошибка */
{
printf("Ошибка :%s\n",grapherrormsg(errorcode));
printf("Для останова нажмите любую клавишу\n");
getch();
exit(1); /* завершение с кодом ошибки */
}
maxx = getmaxx();
maxy = getmaxy();
/* нарисовать на экране изображение */
rectangle(0,0,maxx,maxy);
line(0,0,maxx,maxy);
line(0,maxx,maxy,0)
save_screen(ptr); /* сохранить экран */
getch(); /* пауза */
cleardevice(); /* обнуление экрана */
restore_screen(ptr); /* восстановление экрана */
getch(); /* пауза */
closegraph();
return 0;
}
void save_screen(void far *buf[4])
{
unsigned size;
int ystart=0,yend,yincr,block;
yincr = (maxy+1)/4;
yend = yincr;
size = imagesize(0,ystart,maxx,yend); /* получить размер изо-
браженияв байтах */
for(block = 0; block<=3; block++)
{
if(buf[block] = farmalloc(size))== NULL)
{
closegraph();
printf("Ошибка! Не хватает памяти для сохранения экрана\n");
exit(1);
}
getimage(0,ystart,maxx,yend,buf[block]);
ystart = yend+1;
yend += yincr+1;
}
}
void restore_screen(void far *buf[4]);
{
int ystart=0,yend,yincr,block;
yincr = (maxx+1)/4;
yend = yincr;
for(block=0;block<=3;block++)
{
putimage(0,ystart,buf[block],COPY_PUT);
farfree(buf[block]);
ystart = yend+1;
yend += yincr+1;
}
}