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() — возвращает количество байтов, требуемых для хранения битового образа |
Нет комментариев. Оставить комментарий: |