Главная Обратная связь

Дисциплины:

Архитектура (936)
Биология (6393)
География (744)
История (25)
Компьютеры (1497)
Кулинария (2184)
Культура (3938)
Литература (5778)
Математика (5918)
Медицина (9278)
Механика (2776)
Образование (13883)
Политика (26404)
Правоведение (321)
Психология (56518)
Религия (1833)
Социология (23400)
Спорт (2350)
Строительство (17942)
Технология (5741)
Транспорт (14634)
Физика (1043)
Философия (440)
Финансы (17336)
Химия (4931)
Экология (6055)
Экономика (9200)
Электроника (7621)


 

 

 

 



Вывод текста в графическом режиме видеоадаптера



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 С

 

Символическая константа из font_names Зна­чение Описание шрифта Имя файла шрифта
DEFAULT FONT TRIPLEX_FONT SMALL_FONT SANS_SERIF_FONT GOTHIC_FONT Битовый шрифт 8x8 Сегментированный шрифт Triplex Сегментированный шрифт Small Сегментированный шрифт Sans-Serif Сегментированный шрифт Gothic - TRIP.CHR SMAL.CHR SANS.CHR GОТН.СHR

 

Значение 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>



Просмотров 1147

Эта страница нарушает авторские права




allrefrs.su - 2025 год. Все права принадлежат их авторам!