![]()
Главная Обратная связь Дисциплины:
Архитектура (936) ![]()
|
Вывод текста в графическом режиме видеоадаптера
Turbo С предоставляет пользователю широкие возможности по выводу текстовой информации в графических режимах. Во-первых, это все функции стандартного вывода. Библиотека графики Turbo С позволяет выводить на экран текст различными шрифтами. Turbo С имеет два типа шрифтов: битовый и сегментированный. Каждому символу битового шрифта (bit-mapped font) ставится в соответствие матрица пикселов фиксированного размера. Turbo С использует в качестве битового шрифта таблицу знакогенератора для символов размером 8x8, установленную в компьютере перед инициализацией системы графики Turbo С. Все изменения таблицы знакогенератора, сделанные, например, программами русификации, будут сохранены. Это позволяет, применяя функции Turbo С, выводить текст русскими буквами и в графических режимах. Другой тип шрифтов, используемый Turbo С при выводе текста на экран, фактически задает правило "рисования" каждого символа. Он описывается как совокупность отрезков прямых линий, или сегментов. Этим и объясняется название шрифта - сегментированный (stroke font). Программа может задать масштаб для каждого символа, "растягивая" или "сжимая" его по высоте либо ширине. Однако использование сегментированного шрифта для вывода текста несколько замедляет работу видеосистемы. В Turbo С доступны четыре сегментированных шрифта: Triplex, Small, Sans-Serif и Gothic. Файлы сегментированных шрифтов Turbo С располагаются в файлах с расширением .CHR и, подобно .BGI-драйверам, загружаются как оверлеи во время исполнения программы. Библиотека графики Turbo С дает возможность выводить текст в графических режимах слева направо и снизу вверх. Для вывода символов при использовании любого шрифта может быть задан масштаб знакоместа по отношению к знакоместу шрифта 8x8. При использовании сегментированного шрифта может быть задан размер знакоместа и в относительных единицах масштаба как по вертикали, так и по горизонтали. Кроме того, выводимые строки текста могут выравниваться по-разному: строка может быть "прижата" влево и вверх относительно точки, определенной как текущая точка отсчета, влево и вниз и т.п. Поведение системы графики Turbo С при выводе текста в графическом режиме задается целой группой значений внутренних переменных. Их текущие установки доступны при выполнении функции gettextsettings().
#include <graphics.h> void gettextsettings( struct textsettingstype *texttypeinfo)
Заполняет поля структурной переменной по шаблону textsettingstype информацией о текущих шрифте, направлении вывода текста, размере знакоместа относительно шрифта по умолчанию и способе "прижатия" (выравнивания) шрифта в пределах знакоместа. Функции передается указатель texttypeinfo на описанную структурную переменную. Шаблон textsettingstype описывается в <graphlcs.h> так:
Struct textsettingstype { int font; /*номер шрифта из перечислимого типа font_names[] */ int direction;/* направление вывода текста (горизонтально, вертикально) */ int charsize;/* размер знакоместа относительно шрифта 8x8 */ int horiz;/* код выравнивания по горизонтали (влево, вправо) */ int vert; /*код выравнивания по вертикали (вверх, вниз) */ }
Интерпретация отдельных полей структурной переменной по шаблону textsettingstype приведена в.описании функции settextstyle().
#include <graphics.h> Void settextstyle( int font, int direction, int charsize)
Выбирает шрифт, устанавливает направление и размер знакоместа для последующего вывода текстовой информации через функции библиотеки графики Turbo С outtext() и outtextxy(). Значение font выбирает один из шрифтов Turbo С. Возможные типы шрифтов в Turbo С задаются либо целым числом, либо символической константой из перечислимого типа font_names. В табл. 2.4. приведены доступные шрифты, соответствующие им символические константы, числовые значения и имена файлов шрифтов Turbo С.
Табл. 2.4. Шрифты, доступные в Turbo С
Значение direction позволяет специфицировать направление вывода. Если direction = HORIZ_DIR, текст будет выводиться горизонтально слева направо. Если direction = VERT_DIR, текст будет выводиться вертикально снизу вверх, а символы будут повернуты на 90 градусов против хода часовой стрелки. Третий аргумент функции - charsize - задает масштаб каждого символа относительно знакоместа 8x8. Если, например, задать charsize равным 5, то символ будет изображаться в знакоместе 40 х 40. Если charsize равен 0, то для битового шрифта размер знакоместа изменяться не будет. Для сегментированного шрифта размер знакоместа будет определяться значениями, установленными функцией setusercharsize(). В случае ошибки функция settextstyle() устанавливает во внутренней переменной системы графики соответствующий код ошибки. Он доступен программе через обращение к функции graphresult().
Установленные в системе графики значения высоты символа и его ширины можно получить через обращения к функциям textheight() и textwidth().
#include <graphics.h> int textheight( char *textstring)
Возвращает высоту строки символов в пикселах, на которую указывает textstring. Использует информацию о текущем шрифте и установках масштаба знакоместа. Сама строка, на которую указывает textstring, на экран не выводится. Наиболее часто функция используется для установки нужных промежутков между строками текста, а также при вычислении таких масштабов для символов, которые позволяли бы уместить нужное число строк в фиксированной области экрана.
#include <graphics.h> int textwidth ( char far *textstring)
Возвращает ширину строки символов в пикселах, на которую указывает textstring. Использует информацию о текущем шрифте и установках масштаба знакоместа. Сама строка, на которую указывает textstring, на экран не выводится. Наиболее часто функция используется для установки нужных промежутков между символами текста, а также при вычислении таких масштабов для символов, которые позволяли бы уместить нужное число строк в фиксированной области экрана. В частности, обращение к функции textwidth("A"); возвращает ширину символа 'А' в пикселах.
Еще одна установка системы графики Turbo С, затрагивающая вывод текста в текстовом режиме, - это выравнивание символов. Специальная функция библиотеки графики Turbo С – settextjustify() - позволяет изменить установку по умолчанию для выравнивания символов при выводе текста в графических режимах.
#include <graphics.h>
![]() |