setgraphbufsize

Функция            Изменяет размер внутреннего графического буфера.

Синтаксис          #include 
                   unsigned far setgraphbufsize(unsigned bufsize);

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

Описание           Некоторые графические функции (такие как
                   floodfill) используют буфер памяти, который выде-
                   ляется при вызове initgraph и отменяется при вы-
                   зове closegraph. По умолчанию размер этого, выде-
                   ляемого с помощью _graphgetmem, буфера равен 4096
                   байт.

                   Вы можете сделать этот буфер меньше (для сбереже-
                   ния памяти) или больше (если, например, при обра-
                   щении к floodfill возвращается ошибка -7:Out of
                   flood memory).

                   setgraphbufsize сообщает initgraph сколько памяти
                   выделить для этого встроенного графического буфе-
                   ра, когда она обращается к _graphgetmem.

                   Замечание. Вы должны вызывать setgraphbufsize до
                   вызова initgraph. Если же initgraph вызван, то
                   все обращения к setgraphbufsize будут игнориро-
                   ваться до вызова closegraph.

Возвращаемое       setgraphbufsize возвращает предыдущий раз-
значение           мер встроенного буфера.

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

Смотрите также      closegraph _graphfreemem _graphgetmem
                    initgraph sector

Пример:

#include 
#include 
#include 
#include 

#define BUFSIZE 1000 /* размер внутреннего буфера */

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y,oldsize;
char msg[80];
oldsize = setgraphbufsize(BUFSIZE);
/* инициализация графики и локальных переменных */
initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx()/2;
y = getmaxy()/2;
/* вывести информацию */
sprintf(msg,"Размер графического буфера: %d",BUFSIZE);
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,msg);
sprintf(msg,"Старый размер графического буфера: %d",oldsize);
outtextxy(x,y+textheigth("W"),msg);
/* очистка */
getch();
closegraph();
return 0;
}




   cpp

     setgraphmode

Функция            Переводит систему в графический режим, очищает
                   экран.

Синтаксис          #include 
                   void far setgraphmode(int mode);

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

Описание           setgraphmode выбирает графический режим
                   отличный от установленного по умолчанию функцией
                   initgraph. mode должен быть режимом, допустимым
                   для используемого драйвера. setgraphmode очищает
                   экран и устанавливает все графические величины в
                   значение по умолчанию (CP, палитра, цвет, окно и
                   т.д.).

                   Вы можете использовать setgraphmode совместно с
                   restorecrtmode для переключения между графическим
                   и текстовым режимами.

Возвращаемое       Если вы задаете setgraphmode несуществующий
значение           для используемого драйвера режим, то graph-
                   result вернет значение -10 (grInvalidMode).

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

Смотрите также      getgraphmode getmoderange graphresult
                    initgraph restorecrtmode

Пример:

#include 
#include 
#include 
#include 

int main(void)
{
/* Запрос автоопределения */
int graphdriver = DETECT, gmode, errorcode;
int x,y;

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

/* получение результата инициализации */
errorcode = graphresult();
if(errorcode != grOk)  /* если ошибка */
{
   printf("Ошибка :%s\n",grapherrormsg(errorcode));
   printf("Для останова нажмите любую клавишу\n");
   getch();
   exit(1);  /* завершение с кодом ошибки */
}
x = getmaxx()/2;
y = getmaxy()/2;
/* вывести сообщение */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"Press any key to exit graphics...");
getch();
/* перевести систему в текстовый режим */
restorecrtmode();
printf("Мы в текстовом режиме\n");
printf("Для возврата в графический режим нажмите клавишу.\n");
getch();
/* возврат в графический режим */
setgraphmode(getgraphmode());

/* вывести сообщение */
settextjustify(CENTER_TEXT,CENTER_TEXT);
outtextxy(x,y,"We're back in graphics mode...");
outtextxy(x,y+textheight("W"),"Press any key to halt...");

/* очистка */
getch();
closegraph();
return 0;
}