getimage

 Функция            Запоминает в битовый образ некоторой области эк-
                    рана.

 Синтаксис          #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 и совместимых с ни-
                    ми, оснащенных дисплейными адаптерами, поддержи-
                    вающими графический режим.

 Смотрите также     imagesize putimage putpixel

 Пример:

 #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;
    }
 }