Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TCLR-3Ar.doc
Скачиваний:
16
Добавлен:
12.07.2019
Размер:
664.58 Кб
Скачать

Int far getgraphmode(void)

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

прототип

Описание Ваша программа должна успешно выполнить

вызов initgraph до вызова getgraphmode. Перечис-

ляемый тип graphics_mode, определенный в

graphics.h задает имена встроенных графических

режимов. Для ознакомления с таблицей,отображающей

эти значения, следует обратиться к описанию

Initgraph.

Возвращаемое getgraphmode возвращает графический режим,

значение установленный integraph или setgraphmode.

Переносимость Функция уникальна для Turbo C++. Она работает

только на компьютерах IBM PC и совместимых с ни-

ми, оснащенных дисплейными адаптерами, поддержи-

-190-

вающими графический режим.

Смотрите также getmoderange, restorecrtmode, setgraphmode.

Пример:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

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

int graphdriver = DETECT, gmode, errorcode;

int midx,midy,mode;

char numname[80],modename[80];

/* инициализация графики и локальных переменных */

initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */

errorcode = graphresult();

if(errorcode != grOk) /* если ошибка */

{

printf("Ошибка :%s\n",grapherrormessage(errorcode));

printf("Для останова нажмите любую клавишу\n");

getch();

exit(1); /* завершение с кодом ошибки */

}

midx = getmaxx()/2;

midy = getmaxy()/2;

/* получить код режима */

mode = getgraphmode();

sprintf(numname,"Номер режима: %d",mode);

sprintf(modename,"Текущий графический режим: %s\n",getmodename(mode));

/* вывести информацию */

settextjustify(CENTER_TEXT,CENTER_TEXT);

outtextxy(midx,midy,numname);

outtextxy(midx,midy+2*textheight("W"),modename);

/* очистка */

getch();

closegraph();

return 0;

}

getimage

Функция Запоминает в битовый образ некоторой области эк-

рана.

Синтаксис #include <graphics.h>

Void far getimage(int left, int top, int

right,int bottom, void

far *bitmap);

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

прототип

Описание getimage копирует образ c экрана в память.

left, top, right и bottom определяют область эк-

-191-

рана прямоугольной формы, которая будет скопиро-

вана. bitmap указывает на область в памяти, куда

записывается битовый образ. Первые два слова этой

области задают ширину и высоту прямоугольника,

оставшиеся определяют сам образ.

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

значение

Переносимость Функция уникальна для Turbo C++. Она работает

только на компьютерах IBM PC и совместимых с ни-

ми, оснащенных дисплейными адаптерами, поддержи-

вающими графический режим.

Смотрите также imagesize, putimage, putpixel.

Пример:

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include<alloc.h>

void save_screen(void far *buf[4]);

void restore_screen(void far *buf[4]);

int maxx,maxy;

int main(void)

{

int graphdriver = DETECT, gmode, errorcode;

void far *ptr[4];

/* автоматическое определение драйвера и режима */

initgraph(&graphdriver,&gmode,"");

/* получение результата инициализации */

errorcode = graphresult();

if(errorcode != grOk) /* если ошибка */

{

printf("Ошибка :%s\n",grapherrormessage(errorcode));

printf("Для останова нажмите любую клавишу\n");

getch();

exit(1); /* завершение с кодом ошибки */

}

maxx = getmaxx();

maxy = getmaxy();

/* нарисовать на экране изображение */

rectangle(0,0,maxx,maxy);

line(0,0,maxx,maxy);

line(0,maxx,maxy,0)

save_screen(ptr); /* сохранить экран */

getch(); /* пауза */

cleardevice(); /* обнуление экрана */

restore_screen(ptr); /* восстановление экрана */

getch(); /* пауза */

closegraph();

return 0;

}

-192-

void save_screen(void far *buf[4])

{

unsigned size;

int ystart=0,yend,yincr,block;

yincr = (maxy+1)/4;

yend = yincr;

size = imagesize(0,ystart,maxx,yend); /* получить размер изо-

браженияв байтах */

for(block = 0; block<=3; block++)

{

if(buf[block] = farmalloc(size))== NULL)

{

closegraph();

printf("Ошибка! Не хватает памяти для сохранения экрана\n");

exit(1);

}

getimage(0,ystart,maxx,yend,buf[block]);

ystart = yend+1;

yend += yincr+1;

}

}

void restore_screen(void far *buf[4]);

{

int ystart=0,yend,yincr,block;

yincr = (maxx+1)/4;

yend = yincr;

for(block=0;block<=3;block++)

{

putimage(0,ystart,buf[block],COPY_PUT);

farfree(buf[block]);

ystart = yend+1;

yend += yincr+1;

}

}

getlinesttings

Функция Получает текущий цвет линии, шаблон и толщину.

Синтаксис #include <graphics.h>

void far getlinesettings(struct linesettingstype

far *lineinfo);

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

прототип

Описание getlinesettings заполняет структуру linesettings,

на которую указывает параметр lineinfo информаци-

ей, о текущем типе линий, толщине и шаблоне.

Структура linesettingstype определена в

graphics.h следующим образом:

struct linesettingstype{

int linestyle;

unsigned upattern;

int thickness;

};

linestyle определяет тип линий, который будет ис-

пользоваться ( непрерывная, пунктир, штрихпунк-

-193-

тир, штриховая). Перечисляемый тип line_styles,

определенный в graphics.h, дает символические

имена этим операциям:

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

Название Знач. Описание

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

SOLID_LINE 0 сплошная

DOTTED_LINE 1 пунктир

CENTER_LINE 2 штрихпунктир

DASHED_LINE 3 штриховая

USERBIT_LINE 4 тип линии, заданный

пользователем

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

thickness определяет, будут ли последующие линии

тонкими или толстыми.

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

Название Знач. Описание

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

NORM_WIDTH 1 толшина в 1 пиксель

THICK_WIDTH 3 толщина в 3 пикселя

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

upattern -это 16-битный шаблон, который использу-

ется, только когда linestyle равен USERBIT_LINE

(4). В этом случае каждый бит в шаблоне, установ-

ленный в 1, соответствует пикселю на линии в те-

кущем цвете. Например, сплошной линии соответстс-

вует upattern равный 0xFFFF ( рисуются все пиксе-

ли), а пунктиру соответствует upattern, равный

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]