CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
getimage
getimage
Функция Запоминает битовый образ некоторой области экрана. Синтаксис #include <graphics.h> void far getimage(int left, int top, int right,int bottom, void far *bitmap); Файл, содержащий graphics.h прототип Описание getimage копирует образ c экрана в память. left, top, right и bottom определяют область экрана прямоугольной формы, которая будет скопирована. bitmap указывает на область в памяти, куда записывается битовый образ. Первые два слова этой области задают ширину и высоту прямоугольника, оставшиеся определяют сам образ. Возвращаемое Нет. значение Переносимость Функция уникальна для Borland C++. Она работает только на компьютерах IBM PC и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим. Функция не совместима с Windows. Смотрите также imagesize, putimage, putpixel. Пример: #include <graphics.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include<alloc.h> 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",grapherrormessage(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; } }