русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Вывод текста на графический экран


Дата добавления: 2015-06-12; просмотров: 1065; Нарушение авторских прав


В разд. 19.8 уже упоминалось о возможности вывода сообщений на экран системным шрифтом высокого качества стандартными текстовыми процедурами. Однако описанный там способ не позволяет использовать все возможности видеоадаптеров.

Рассмотрим некоторые особенности прерывания 10H БСВВ. В нем есть несколько функций вывода текста с управлением цветом выводимых символов:

функция 09H — вывод в текущую позицию текстового курсора символа с заданным цветовым атрибутом;

функция 0EH — вывод символа в режиме телетайпа;

функция 13H — вывод текстовой строки.

Функция 09H не очень интересна, так как при выводе каждого символа необходимо самим передвигать текстовый курсор в следующую позицию. В этом смысле развитием ее является функция 0EH — {518} вывод каждого символа сопровождается его перемещением на следующую позицию (это и есть телетайп). Пример работы с этой функцией при выводе строки символов показан на рис. 22.9.

 

USES Graph, CRT, DOS; {$I initgraf.pas} {Процедура инициализации (см. гл. 19) } PROCEDURE TeleWrite( str : String; attr : Byte ); {Процедура вывода символа sym заданного цвета attr на } {графический экран системным шрифтом текстового режима } PROCEDURE WriteSym( sym : Byte; { ASCII-код символа } attr : Byte ); { цвет символа (0..15 } VAR regs : Registers; { требуется для прерываний } BEGIN with regs do begin { действия с полями reg } AH := $0E; { функции вывода символа } AL := sym; { ASCII код символа } BL := attr+$80; { его цвет (+$80 для XOR) } end; Intr( $10, regs ) { вызов прерывания 10H } END; {WriteSym} VAR i : Byte; BEGIN {TeleWrite} for i := 1 to Length( str ) do WriteSym( Ord( str[i] ), attr ); END; {TeleWrite} BEGIN { Пример вызова } GrInit; { инициализация графики } Bar3D(315,50, 330, 200, 30, TopOn); { графическая фигура } GotoXY( 34,12 ); { установка позиции } TeleWrite( 'Это желтый цвет', Yellow ); ReadLn; { пауза до нажатия ввода } CloseGraph { закрытие графики } END.

Рис. 22.9



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

Функция 13H работает на графических адаптерах класса EGA и VGA и позволяет выводить не только строку заданного цвета (при {519} значении 0 или 1 регистра AL процессора — см. рис. 22.10), но и строку, в которой атрибуты заданы для каждого символа отдельно. При этом строка должна иметь структуру «символ-атрибут-символ-атрибут-...». Такой режим задается, если в регистр AL записать значение 2 или 3 (регистр BL при этом не используется). При значениях AL, равных 0 или 2, перевод курсора при выводе не осуществляется в отличие от значений 1 и 3. В графических режимах лучше использовать режимы 0 и 2.

{Процедура вывода строки заданного цвета на графический } {экран системным шрифтом для текстового режима } {================(только EGA и VGA)==================== } PROCEDURE WriteStr( str : String; { выводимая строка } X, Y : Byte; { координаты начала } Page : Byte; { номер видеостраницы } attr : Byte ); { цвет символа (0..15) } VAR R : Registers; { требуется для прерываний } BEGIN with R do { действия с полями записи } begin AH := $13; { функция вывода строки } AL := 0; { цвет символов задан в BL } BH := page; { вывод на страницу page } BL := attr+$80, { цвет (+$80 для XOR) } DH:=Y; { DH и DL - позиция тексто- } DL := X; { вого курсора } CX := Length( str); { длина выводимой строки } BP := Ofs( str )+1; { Адрес выводимой строки в } ES := Seg( str ) { виде базы и сегмента, } end; { начиная со Str[1]. } Intr( $10, R ); { вызов прерывания 10Н } END;

Рис. 22.10



<== предыдущая лекция | следующая лекция ==>
Карта дисплейной памяти | Работа с графическими образами на диске


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.258 сек.