Russian Belarusian English German Japanese Ukrainian

Imagesise

CuBook05

Функция

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

#include <graphics.h>
unsigned far imagesize(int left, int top, int right, int bottom);
 
Прототип

graphics.h
 
Описание

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

Функция imagesize возвращает размер требуемой области памяти в байтах.
 
Переносимость

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

#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

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

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


Защитный код Обновить