Управление экраном и памятью в текстовом режиме — КиберПедия 

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Управление экраном и памятью в текстовом режиме

2017-06-19 227
Управление экраном и памятью в текстовом режиме 0.00 из 5.00 0 оценок
Заказать работу

 

В текстовом режиме можно управлять размерами активного окна, курсором, цветом фона и цветом текста. К функциям управления экраном относятся функции задания и очистки экрана, управления курсором и управление цветом. Функции задания окна и его очистки были приведены в первой главе. Это функции window() и clrscr().

Следующая функция – это функция позиционирования курсора в пределах активного окна. Ее прототип

void gotoxy(int x, int y);

здесь x и y – координаты относительно активного окна.

Функции

int wehrex(); int wehrey();

возвращают координаты x и y текущего положения курсора.

Установкой или заменой текстового режима управляет функция textmode() с прототипом

int textmode(int mode);

здесь аргумент mode задает режим печати, а именно количество строк на экране, количество символов в строке и цвет. Он может быть задан в виде макроса или в виде числового эквивалента [2].

Современная техника позволяет выводить текст в цвете. Можно определить как цвет текста, так и цвет фона. Однако использовать цвет могут только специальные функции, связанные с оконным интерфейсом. Такие функции как printf() для этого не предназначены.

Для изменения цвета текста предназначена функция textcolor(). Ее прототип

void textcolor(int color);

Аргумент color может принимать значения от 0 до 15. Каждому значению соответствует свой цвет. (Число может быть заменено соответствующим макросом). Кроме того, textcolor() позволяет делать цвет мигающим (blink). Код этого аргумента - 128. Для того, чтобы сделать цвет мигающим надо применить побитовую операцию “OR” к цвету и величине BLINK. Например, для вывода текста красным мигающим цветом надо применить функцию

textcolor(RED|BLIK).

Изменение цвета текста оказывает действие только на вновь выводимый текст и не оказывает никакого действия на ранее введенный текст.

Для установки цвета фона используется функция

void textbackground(int color);

Здесь аргумент color имеет те же значения, что и в функции textcolor().

Функция clrscr() не только очищает активное окно, но и заполняет его цветом, заданным в функции background().

Пример 9.2.Использование функций работы с текстом.

# include <conio.h>

main(void)

{

register int ctext< cback;

textmode(C80); /* 40 символов, 25 строк, цветовой */

for(ctext = BLUE; ctext<=WHITE; ctext++)

{

for(cback = BLACK; cback<=LIGHTGRAY; cback++)

{

textcolor(ctext);

textbackground(cback);

cprintf(“ТЕКСТ”);

}

cprintf(“\n”);

}

textcolor(WHITE|BLINK);

textbackground(BLACK);

cprintf(“КОНЕЦ ТЕКСТ”);

textmode(LASTMODE);

RETURN(0);

}

Организация видеопамяти при работе с текстом следующая. Каждому символу соответствует 2 байта. В одном из них хранится код символа, в другом - атрибут символа. Байт атрибута имеет следующий вид:

               
В Ф Ф Ф С С С С

 

где СССС-4 битовый двоичный код символа; ФФФ – 3-битовый двоичный код фона; В – признак мигания(1 – мигание включено,0- выключено).

Так как для цвета фона выделено 3 бита, то цветов фона может быть только 8, а для цветов символа, задаваемого четырьмя битами – 16 цветов.

Более того, любой цвет формируется смешением красного (R-red), зеленого (G-green) и голубого (B-blue) цветов. В байте атрибута мы можем указать, какой бит за какой цвет отвечает:

               
В R G B С R G B

 

При этом третий бит отвечает за яркость цвета символа. Если мы будем рассматривать последние 3 бита, то комбинация 0001 будет соответствовать цвету BLUE (1), в то время как 1001 будет соответствовать цвету LIGHTBLUE (9). Соответственно 0000- черный цвет (0). 1111- белый цвет (15).

Функция, которая позволяет задавать атрибут, имеет прототип

void textattr(int newattr);

Например, задать атрибут, соответствующий красному символу на черном фоне, можно следующими способами:

textattr((BLACK<<4)+ RED+ BLINK);

 

или textattr(0x80);

Двоичная запись шестнадцатеричного числа 0х80 имеет вид 10000100. Сравните его с битами атрибута.

В библиотеке предусмотрены функции, позволяющие сохранять, восстанавливать и перемещать содержимое части экрана. Этими функциями являются соответственно

int gettext(int left,int top,int right, int bottom, void*destin);

int puttext(int left,int top,int right, int bottom, void*sourse);

int movetext(int left,int top,int right, int bottom, int destleft, int desttop);

Область экрана задается координатами левого верхнего и правого нижнего углов, область памяти, в которую (или из которой) переносится часть видеопамяти, задается указателями destin и sourse. В функции movetext() два последних аргумента указывают на координаты верхнего левого угла нового расположения экрана. Так как для каждого символа отводится два байта памяти, то при сохранении участка экрана надо предусмотреть буфер соответствующего размера.

Все прототипы функций хранятся в заголовочном файле CONIO.H

 


Поделиться с друзьями:

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.