imagesize

 Функция            Возвращает  количество  байтов,  требуемых для
                    хранения битового образа.

 Синтаксис          #include 
                    unsigned far  imagesize(int left,  int top,
                     int right, int bottom);

 Файл, содержащий   graphics.h
 прототип

 Описание           imagesize определяет размер области памяти, тре-
                    буемой для хранения битового образа. Если размер,
                    требуемый для выбранного образа больше или равен
                    64К-1 байт,  imagesize возвращает 0хFFFF(-1).

 Возвращаемое       imagesize возвращает размер требуемой области
 значение           памяти в байтах.

 Переносимость      Функция уникальна для Turbo C++. Она работает
                    только на компьютерах IBM PC и совместимых с ними,
                    оснащенных дисплейными адаптерами, поддерживающими
                    графический режим.

 Смотри также        getimage putimage
 Пример:

 #include 
 #include 
 #include 
 #include 

 #define ARROW_SIZE 10

 void draw_arrow(int x,int y);

 int main(void)
 {
 int graphdriver = DETECT, gmode, errorcode;
 void *arrow;
 int x,y,maxx;
 unsigned int size;

 /* инициализация драйвера и локальных переменных */
 initgraph(&graphdriver,&gmode,"");

 /* получение результата инициализации */
 errorcode = graphresult();
 if(errorcode != grOk)  /* если ошибка */
 {
    printf("Ошибка :%s\n",grapherrormsg(errorcode));
    printf("Для останова нажмите любую клавишу\n");
    getch();
    exit(1);  /* завершение с кодом ошибки */
 }
 maxx = getmaxx();
 x = 0;
 y = getmaxy()/2;
 /* нарисовать перемещаемый объект */
 draw_arrow(x,y);
 /* определить размер памяти, для хранения изображения */
 size = imagesize(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE);
 /* выделить память */
 arrow = malloc(size);
 /* взять изображение */
 getimage(x,y-ARROW_SIZE,x+(4*ARROW_SIZE),y+ARROW_SIZE,arrow);
 /* продолжать, пока не будет нажата клавиша */
 while(!kbhit())
 {
    /* стереть старый образ */
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
    x += ARROW_SIZE;
    if(x >= maxx)
       x = 0;
    /* нарисовать изображение */
    putimage(x,y-ARROW_SIZE,arrow,XOR_PUT);
 }

 free(arrow);
 closegraph();
 return 0;
 }

 void draw_arrow(int x,int y)
 {
    /* нарисовать на экране стрелку */
    moveto(x,y);
    linerel(4*ARROW_SIZE,0);
    linerel(-2*ARROW_SIZE,-1*ARROW_SIZE);
    linerel(0,2*ARROW_SIZE);
    linerel(2*ARROW_SIZE,-1*ARROW_SIZE);
 }