putimage()
#include <graphics.h>
void far putimage()
Параметры
Описание
Помещает на экран ранее записанный в память образ
Ф. помещает на экран ранее записанный образ функцией getimage() образ. bitmap указывает на область в памяти, откуда записывается битовый образ. Первые два слова этой области задают ширину и высоту прямоугольника, оставшиеся определяют сам образ. op задаёт оператор заполнения. В заголовочном файле graphics.h определенны следующие операторы. enum putimage_ops { COPY_PUT, //MOV XOR_PUT, //XOR OR_PUT, //OR AND_PUT, //AND NOT_PUT //NOT }; Пример. #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",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; } }
Смотрите также
getimage() — запоминает в битовый образ некоторой области экрана
imagesize() — возвращает количество байтов, требуемых для хранения битового образа |
Нет комментариев. Оставить комментарий: |