Непосредственный вывод строк




Итак, мы выбрали шрифт. Теперь перейдем к выводу текста. Для этого есть две процедуры. Первая —

OutText(TextString: String)

выводит на графический экран строку TextString, ориентированную относительно позиции текущего указателя, а вторая

OutTextXY(x, y: Integer; TextString: String) {463}

выводит строку, ориентированную относительно координат (X, Y). Шрифт предварительно может быть установлен вызовом SetTextStyle (по умолчанию принимается DefaultFont). Рассмотрим ориентировку строки относительно стартовой точки. Существует несколько вариантов ориентировки. Они задаются процедурой

SetTextJustify(Horizontal, Vertical: Word)

параметры которой могут принимать одно из трех объявленных в модуле Graph значений:

CONST

{ — Для горизонтального ориентирования (Horizontal) — }

LeftText = 0; { координата X задает левый край строки }

CenterText = 1; { координата X задает середину строки }

RightText = 2; { координата X задает правый край строки }

{ — Для вертикального ориентирования (Vertical): — }

BottomText = 0; { координата Y задает нижний край строки }

CenterText = 1; { координата Y задает середину строки }

TopText = 2; { координата Y задает верхний край }

Эта процедура позволяет ориентировать выводимую строку относительно стартовой координаты по схеме, показанной на рис. 19.34, где знак ■ символизирует координаты (X,Y). По умолчанию параметры ориентировки соответствуют LeftText, TopText.

Horizontal

┌─────────────────────────────────┐

LeftText CenterText RightText ┐

■────────────■─────────────■ TopText │

■ Это строка■текста ■ CenterText │

■────────────■─────────────■ BottomText │

Рис. 19.34

Отметим, что текстовые процедуры GotoXY, Write/WriteLn и установка цвета текста в графическом режиме работают только, если переменная CRT.DirectVideo равна False (или модуль CRT не подключен). Ввод текста через Read/ReadLn действует всегда. При этом текст стирает фоновое изображение (см. также гл. 22).

Размер букв и его масштабирование

19.9.4.1. Размер букв и строк. Всегда важно знать вертикальный и горизонтальный размер выводимой строки в пикселах. Это позволяет располагать строки пропорционально разрешающей способности графического режима, вычислять «текстовую» емкость окна и т.п. Функции {464}

TextHeight(TextString: String): Word;

и

TextWidth(TextString: String): Word;

возвращают высоту и ширину строк TextString в пикселах, при условии, что они будут выведены текущим шрифтом и размером (т.е. заданными последним вызовом SetTextStyle или по умолчанию). Для штриховых шрифтов размеры букв различаются (их начертание неравномерное), и длина и высота строки в пикселах зависит не только от количества букв в ней, но и от их начертания. Пример анализа расположения строк показан на рис. 19.35, выводящем рекламную информацию.

USES Graph; { подключен модуль Graph } {$I initgraf.pas) { процедура инициализации } CONST my_str = 'Turbo Pascal '; { выводимая строка текста } VAR maxx, maxy: Integer; { текущее разрешение экрана } tx, ty, i, j: Word; { временные переменные } BEGIN GrInit; maxx:=GetMaxX; maxy:=GetMaxY; { разрешение } SetTextJustify(CenterText, CenterText); { ориентация } SetTextStyle(SmallFont, HorizDir, 6); { стиль шрифта } tx:= TextWidth(my_str); { ширина строки } ty:= TextHeight(my_str); { высота строки } for j:=1 to (maxy div ty) do { цикл no оси Y } for i:=1 to (maxx div tx) do { цикл по оси X } OutTextXY(i*tx, j*ty, my_str); { тело циклов } SetTextStyle(DefaultFont,HorizDir,6); { смена шрифта } tx:= TextWidth ('W') div 6; { 1/6 ширины } ty:= TextHeight('E') div 6; { 1/6 высоты } SetColor(LightRed); OutTextXY(maxx div 2 + tx, maxy div 2 + ty, my_str); SetColor(LightBlue); OutTextXY(maxx div 2, maxy div 2, my_str); ReadLn; { пауза до нажатия ввода } CloseGraph { закрытие режима графики } END.

Рис. 19.35

У процедуры OutTextXY есть одна особенность: выводимая текстовая строка всегда обрезается по границе графического окна. Более {465} того, если активным является матричный шрифт (DefaultFont), то «вылезающая» строка вообще не появляется на экране. Решать подобные проблемы можно, точно рассчитывая место выводимых в графике строк.

19.9.4.2. Масштабирование штриховых шрифтов. Размер букв (высота и ширина) штриховых шрифтов (и только их) может задаваться процедурой

SetUserCharSize(multX, divX, multY, divY: Word)

Она позволяет оперативно менять размер шрифта, установленный процедурой SetTextStyle. Отношение (multX/divX) задает масштабирование ширины начертания шрифта, а отношение (multY/divY) выражает масштаб изменения высоты шрифта. Например, задание параметров multX=3 и divX=1, говорит о том, что буквы выводимого шрифта будут в три раза шире нормы.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-01 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: