Russian Belarusian English German Japanese Ukrainian

Rashka.studio - игры и приложения для Android! Заходи, ждём тебя =)

Getimage

CuBook05

Функция

Запоминает битовый образ некоторой области экрана.
 
Синтаксис

#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.
 
Пример

#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;
}
}
Если заметили ошибку, выделите фрагмент текста и нажмите Ctrl+Enter

Добавить комментарий