Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник по функциям С++.doc
Скачиваний:
168
Добавлен:
02.05.2014
Размер:
3.57 Mб
Скачать

Allocmem

----------------------------------------------------------------

НазначениеВыделяет сегмент памяти DOS.

Синтаксис int allocmem(unsigned size, unsigned *segp);

Прототип вdos.h

Замечанияallocmem, используя системный вызов MS-DOS

0x48, выделяет блок свободной памяти и возвра-

щает адрес сегмента этого блока.

size - требуемый размер в параграфах (размер

параграфа равен 16 байтам). segp - указатель на

слово, в которое занесется адрес сегмента выде-

ляемого блока. По адресу segp не будет присвое-

но кокое-либо значение в случае недостатка сво-

бодной памяти.

Все выделяемые блоки выравнены по параграфам.

ВозвращаемоеПри успешном завершении allocmem возвращает -1.

значениеВ случае ошибки возвращается число (размер

максимально доступного блока памяти). При этом

значения переменной _doserrno и глобальной

переменной errno устанавливаются в

ENOMEM Недостаточно памяти.

ПереносимостьУникальна для МS-DOS.

Смотри также coreleft, freemem, malloc, setblock

-----------------------------------------------------------------

arc

-----------------------------------------------------------------

НазначениеРисует круговую дугу.

Синтаксис #include<graphiсs>

void far arc (int x, int y, int stangle,

int endangle, int radius);

Прототип в graphics.h

Замечанияarc чертит круговую дугу текущего цвета рисова-

ния с центром в (x,y) и радиусом, заданным в

radius. arc чертит от stangle до endangle. Если

stangle=0, а endangle =360, то вызов arc приво-

дит к вычерчиванию полной окружности.

Угол для arc формируются против часовой стрел-

ки. При этом 0 градусов соответствует 3 часам,

90 градусов соответствуют 12 часам и т.д.

Замечание: при вычерчивании дуги, окружности,

эллипса и сектора для определения типа линии

используется параметр thickness а не linestyle.

Замечание: при использовании графического адап-

тера CGA или монохромного адаптера приведенные

в данном материале примеры могут не привести к

ожидаемому результату. Это объясняется тем, что

вам необходимо передать значение 1 графическим

функциям (например, setcolor, setfillstyle,

setlinestyle), которые изменяют цвет наполнения

(закрашивания) и рисования, вместо соответству-

ющей символьной константы цвета (определена в

grafics.h). Второй пример в данном разделе ил-

люстрирует построение графиков в случае исполь-

зования адаптеров CGA или монохромного адапте-

ра.

ВозвращаемоеНет.

значение

ПереносимостьДанная функция работает только на IBM PC и

совместимых моделях при наличии соответствующих

графических адаптеров.

Смотри также circle, ellipse, fillellipse, getarccoords,

sector

Пример 1 Синтаксис графических функций для адаптеров

EGA и VGA.

#inсlude<graphics.h>

#inсlude<conio.h>

main ()

{

int graphdriver = DETECT, graphmode; /* требование

автоопределения */

struct arccoordstype arcinfo;

int xasp, yasp;

long xlong;

initgraph(&graphdriver, &graphmode, " "); /* инициали-

зация графики */

/* Начертить дугу в 90 градусов с радиусом 50 */

arc(150, 150,0,89,50);

/* Получить координаты дуги и соединить концы */

getarccoords (&arcinfo);

line(arcinfo.xstart, arcinfo.ystart, arcinfo.xend,

arcinfo.yend);

/* Нарисовать окружность */

circle(150,150,100);

/* Нарисовать эллипс внутри окружности */

ellips(150,150,0,359,100,50);

/* Нарисовать и заполнить круговой сектор */

setcolor(WHITE); /* белый рисунок */

setfillstyle(SOLID_FILL, LIGHTRED);

pieslice(100,100,0,134,49);

setfillstyle(SOLID_FILL, LIGHTBLUE);

pieslice(100,100,135,225,49);

setfillstyle(SOLID_FILL, WHITE);

pieslice(100,100,225,360,49);

/* Начертить "квадратный" прямоугольник */

getaspectratio(&xasp, &yasp);

xlong = (100L*(long)yasp)/(long)xasp;

rectangle(0,0, (int)xlong, 100);

getch();

closegraph();

}

Пример 2 Синтаксис графических функций для адаптеров

CGA и монохромного адаптера.

#inсlude<graphics.h>

#inсlude<conio.h>

main ()

{

int graphdriver = DETECT, graphmode; /* требование

автоопределения */

struct arccoordstype arcinfo;

int xasp, yasp;

long xlong;

initgraph(&graphdriver, &graphmode, " "); /* инициали-

зация графики */

/* Начертить углы в 90 градусов с радиусом 50 */

arc(150, 150,0,89,50);

/* Получить координаты дуги и соединить концы */

getarccoords (&arcinfo);

line(arcinfo.xstart, arcinfo.ystart, arcinfo.xend,

arcinfo.yend);

/* Нарисовать окружность */

circle(150,150,100);

/* Нарисовать эллипс внутри окружности */

ellips(150,150,0,359.100,50);

/* Нарисовать и заполнить круговой сектор */

setfillstyle(HATCH_FILL, 1);

pieslice(100,100,0,134,49);

setfillstyle(SLASH_FILL, 1);

pieslice(100,100,135,225,49);

setfillstyle(WIDE_DOT, 1);

pieslice(100,100,225,360,49);

/* Начертить "квадратный" прямоугольник */

getaspectratio(&xasp, &yasp);

xlong = (100L*(long)yasp)/(long)xasp;

rectangle(0,0, (int)xlong, 100);

getch();

closegraph();

}

-----------------------------------------------------------------