Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorna_robota_12_3cht__SA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
231.94 Кб
Скачать

6.3. Текст.

Побитовый шрифт с матрицей 8х8 и несколько штриховых шрифтов определены для вывода текста в графическом режиме. Символ побитового шрифта определен в матрице 8х8 пикселей (точек). Штриховой шрифт определен серией отрезков, которые говорят графической системе как рисовать шрифт. Удобство использования штрихового шрифта проявляется, когда Вы начинаете рисовать большие символы. Поскольку штриховой шрифт определен отрезками, он остается хорошего разрешения и качества при увеличении. Когда побитовый шрифт увеличивается, матрица умножается на коэффициент масштабирования, и как только коэффициент масштабирования становится большим, разрешения символов становится грубым. Для небольших символов побитовый шрифт будет эффективен, но для большого текста Вы захотите использовать штриховой шрифт.

Каждый штриховой шрифт хранится в отдельном файле с расширением .CHR. Файлы шрифтов могут быть загружены с диска автоматически модулем Graph во время выполнения (как описано), или они могут быть включены в пользовательскую программу или загружены ей и "зарегистрированы" модулем Graph.

Специальная программа BINOBJ.EXE обеспечивает преобразование файла шрифтов (или любого двоичного файла данных, который соответствует ему) в файл .OBJ, который может быть включен в модуль или программу, используя директиву компилятора {$L}. Это позволяет программе иметь все файлы шрифтов, встроенные в .EXE файл.

В модуле Graph определены следующие константы управления шрифтом:

Константа

Значение

Описание

DefaultFont

0

шрифт с побитовым отображением 8х8

TriplexFont

1

"штриховой" шрифт

SmallFont

2

мелкий шрифт

SanScrifFont

3

GothicFont

4

HorizDir

0

направление слева направо

VertDir

1

снизу-вверх

NormSize

1

типовой размер

Для работы с текстом в графическом режиме определены следующие процедуры.

Процедура SetTextStyle устанавливает текущий шрифт, тип и коэффициент размера символа.

Описание: SetTextStyle(шрифт : word; направление : word; разм_символа : CharSizeType)

Примечания: Процедура влияет на весь текстовый вывод, выполняемый процедурами OutText и OutTextXY. Можно использовать один шрифт с двоичным образом 8х8 и несколько "штриховых" шрифтов.

Поддерживается нормальное (слева направо) расположение шрифта и вертикальное (развернутое на 90 градусов относительно нормального расположения), при котором текст начинается с нижней границы экрана и продолжается вверх. Размер каждого символа может увеличиваться на коэффициент, задаваемый параметром "разм_символа". Значение размера символа, равное единице, приводит к выводу двоичного образа шрифта 8х8 в прямоугольную область экрана, содержащую 8х8 элементов изображения, параметр "разм_символа", равный 2 приведет к выводу на экран двоичного образа шрифта 8х8 в прямоугольную область элементов изображения размером 16х16 и т. д. (вплоть до десятикратного увеличения нормального размера). Для определения действительных размеров шрифта всегда используйте процедуры TextHeight и TextWidth. Нормальными значениями размера для шрифта являются 1 для принятого по умолчанию шрифта и 4 для "штрихового" шрифта. Эти значения можно передавать процедуре SetTextStyle в параметра "разм_символа". Для настройки размера "штрихового" текстового шрифта можно использовать процедуру SetUserFont.

Процедура SetTextJustify Устанавливает значения выравнивания текста, которые используются процедурами OutText и OutTextXY.

Описание: SetTextJustify(гориз, верт : word)

Примечания: После процедуры SetTextJustify вывод текста будет выравниваться по текущему указателю заданным способом.

Установленные по умолчанию параметры выравнивания можно восстановить с помощью вызова SetTextJustify(LeftText,TopText). Если процедуре SetTextJustify передаются недопустимые параметры, функция GraphResult будет возвращать значение -11(grError), а текущие параметры выравнивания текста останутся неизмененными.

Определены следующие константы:

Константа

Значение

Описание

горизонтальное выравнивание

LeftText

0

выровнять влево

CenterText

1

центрировать

RightText

2

выровнять вправо

вертикальное выравнивание

BottomText

0

переместить вниз

CenterText

1

центрировать

TopText

2

переместить вверх

Процедура OutText Пересылает строку на устройство вывода в то место, в котором находится текущий указатель.

Описание: ОutТехt(строка : string)

Примечания: Параметр "строка" выводится в месте расположения текущего указателя. При этом используются текущие параметры выравнивания. Если строка слишком длинная и не умещается на экране или в текущей области просмотра, то она усекается. Если активен шрифт, используемый по умолчанию (шрифт с побитовым отображением), а строка слишком велика и не умещается на экране, то она не выводится. В данной процедуре используется шрифт, установленный процедурой SetTextStyle.

Процедура OutText использует параметры вывода, установленные процедурой SetTextJustify (выравнивание, центрирование, вращение на 90 градусов и т.д.). Текущий указатель изменяется процедурой OutText только в том случае, если направление вывода текста горизонтальное и задано выравнивание по левой границе. Направление вывода текста (горизонтальное или вертикальное) задается с помощью процедуры SetTextStyle, а выравнивание - с помощью процедуры SetTextJustify (текущий указатель слева от строки, центрируется или расположен справа от строки, записывается над строкой, под строкой).

В следующем примере в блоке 1 выводится ABCDEF и текущий указатель перемещается (текст выводится горизонтально и выравнивается слева), в блоке 2 выводится ABC а DEF записывается справа над этим текстом, так как текст выравнивается справа, аналогично, в блоке 3 выводится текст ABC и над ним справа выводится DEF (так как текст выводится вертикально).

program CPupdate;

uses Graph;

var Driver, Mode : integer;

begin

Driver := Detect;

InitGraph(Driver, Mode, '');

if GraphResult < 0 then

Halt(1);

{ блок 1 }

MoveTo(0, 0);

SetTextStyle(DefaultFont, HorizDir, 1) { разм. симв. =1 }

SetTextJustify(LeftText, TopText);

OutText('ABC'); { CP изменяется }

OutText('DEF'); { СР изменяется }

{ блок 2 }

MoveTo(100, 50);

SetTextStyle(DefaultFont, HorizDir, 1) { разм. симв. =1 }

SetTextJustify(RightText, TopText);

OutText('ABC'); { CP изменяется }

OutText('DEF'); { СР изменяется }

{ блок 3 }

MoveTo(100, 100);

SetTextStyle(DefaultFont, VerDir, 1) { разм. симв. =1 }

SetTextJustify(LeftText, TopText);

OutText('ABC'); { CP не изменяется }

OutText('DEF'); { СР не изменяется }

Readln;

CloseGraph;

end.

Процедура OutTextXY Пересылает строку на устройство вывода.

Описание: OutTextXY(Х,Y : integer; текст_строка :string)

Примечания: Строка, заданная параметром "текст_строка", выводится в точке (Х,У). Если строка слишком длинная и выходит за пределы экрана или текущей области просмотра, то она усекается.

Процедура GetTextSettings Возвращает текущий тип текстового шрифта, его направление, размер и выравнивание, установленные с помощью процедур SetTextStyle и SetTextJustify.

Описание: GetTextSettings(var TextInfo : TextSettingsType)

Примечания: Определены следующие типы:

type CharSizeType = 1..10;

TextSettingsType = record

Font : word;

Direction : word;

CharSize : CharSizeType;

Horiz : word;

Vert : word;

end;

Пример:

uses Graph;

var Gd, Gm : integer;

OldStyle : TextSettingsType;

begin

Gd := Detect; { перевести в графический режим }

InitGraph(Gd, Gm, '');

if GraphResult < 0 then

Halt(1);

GetTextSettings(OldStyle);

SetTextJustify(LeftText, CenterText);

SetTextStyle(TriplexFont, VertDir, 4);

OutTextXY(GetMaxX, div 2, GetMaxY div 2, 'Новый тип');

with OldStyle do

begin { восстановить старый тип текста}

SetTextJustify(Horiz, Vert);

SetTextStyle(Font, Directtion, CharSize);

end;

OutTextXY(0, TextHeight('H'), 'Снова старый тип');

Readln;

CloseGraph;

end.

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