Imagesiz
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 и совместимых с ними, оснащенных дисплейными адаптерами, поддерживающими графический режим.
Смотри также Пример:
#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); }