Функция возвращает размер буфера (в байтах), необходимого для сохранения прямоугольного участка экрана дисплея, задаваемого двумя диагонально противоположными точками - (x_first, y_first) и (x_second, y_second). long _imagesize( short x_first, short y_first, short x_second, short y_second );
Функция определяет размер буфера по следующим формулам: width = abs(x_first-x_second) + 1; height = abs(y_first-y_second) + 1; size=((long)((width * bits_per_pixel + 7) / 8)*(long)height) + 4;
Величина bits_per_pixel, содержит число битов видеопамяти определяющих один пиксел. Этот параметр режима видеоадаптера можно получить через функцию _getvidioconfig().
После вычислений переменная size содержит необходимый размер буфера в байтах.
Теперь приведем программу, иллюстрирующую использование функций _imagesize(), _getimage() и _putimage(). Она переводит видеоадаптер в графический режим и отображает несколько строк текста. Затем она при помощи функции _getimage() записывает участок экрана в буфер памяти. Далее программа отображает этот участок в нескольких соседних местах экрана, создавая иллюзию перемещения изображения.
#include <conio.h> #include <stdlib.h> #include <malloc.h> #include <graph.h>
void main(void) { char _huge *buffer; char text[8]; long imsize; short i, x = 0, width = 60, height = 27;
// выбираем режим видеоадаптера с наибольшим разрешением
if(!_setvideomode(_MAXRESMODE)) exit(1);
sprintf(text, "текстовая строка");
// отображаем на экране несколько строк text