Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

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

Процедура WriteLn печатает маленькие буквы. В модуле Graph имеются процедуры SetTextStyle и OutTextXY, которые общими усилиями печатают буквы разного размера (в том числе и очень крупного) нескольких изящных очертаний, причем процедура SetTextStyle задает стиль и размер букв, а процедура OutTextXY печатает строку букв заданного стиля и размера в заданном месте экрана. Например, в результате выполнения фрагмента

SetTextStyle (4,0,8);

OutTextXY(200,300,'Hello!')

на экране появится строка Hello!, выполненная шрифтом 4 (готический) размера 8. Левый верхний угол строки будет находиться в точке (200, 300). Число 0 означает обычное горизонтальное направление текста, 1 - вертикальное, 2 - горизонтальное с лежащими буквами. Цвет текста, как и цвет фигур, определяется процедурой SetColor.

Всего в Паскале 5 стандартных шрифтов:

0 - обычный растровый (остальные - векторные),

1 - полужирный,

2 - тонкий,

3 - газетный,

4 - готический.

Размер букв зависит от шрифта. Можно независимо друг от друга менять высоту и ширину букв. Для этого существует процедура SetUserCharSize. Например, SetUserCharSize(7,3, 9,4) устанавливает ширину букв в 7/3 раза больше нормальной, а высоту - в 9/4.

К сожалению, стандартный набор векторных шрифтов Паскаля не поддерживает русские буквы. Если вы хотите красиво писать по-русски, вам придется где-нибудь найти подходящие файлы русских шрифтов.

Недостаток OutTextXY - она выводит только строковые выражения. Покажем, как все-таки можно напечатать значение числового выражения. Пусть переменная а описана как Integer и равна 937. Оператор OutTextXY(200,200, а) не захочет ее печатать. Тогда придумаем переменную as и опишем ее как String. Это сделает следующий фрагмент:

а:=937;

Str(a,as);

OutTextXY(200,200, as)

Процедура Sir преобразовывает число а=937 в строку из трех символов as='937'.

Для симметрии покажем и обратную процедуру Val:

VAR a,err :Integer;

as :String;

BEGIN

as:='937';

Val(as,a,err);

WriteLn (a+1);

ReadLn

END.

Пояснения. Процедура Val преобразовывает строку из трех символов 937 в число 937. В результате оператор WriteLn (a+1) печатает число 938.

Задание 132

У вас имеется текстовый файл из произвольного числа строк. Организуйте вывод этого файла на экран векторным шрифтом. Если у вас есть время, организуйте управление с клавиатуры: про-листывание текста, выбор шрифта, выбор цвета шрифта и фона.

15.7. Управление цветом в текстовом режиме (модуль crt)

если вам не нужно рисовать на экране картинки, то не нужен и графический режим. Тем более что вывод текста в текстовом режиме можно сделать достаточно красиво и удобно. Делается это с помощью модуля CRT, процедуры которого приведены ниже:

TextColor (Yellow)

Выбор цвета текста

TextBackground (Blue)

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

ClrScr

Очистка экрана. Если в программе предварительно был выполнен оператор TextBackground (Blue), то после выполнения ClrScr весь экран станет синим

GotoXY(61,14)

Поместить курсор в 61-й столбец 14-й строки

До сих пор вы не умели управлять положением текстового курсора на экране. При помощи процедуры GotoXY вы сможете помещать курсор в произвольную точку экрана, а значит, и текст печатать в произвольном месте экрана. Вспомним, что в текстовом режиме экран обычно разделен на 25 строк по 80 столбцов. Строки пронумерованы сверху вниз, столбцы - слева направо.

Задача. Закрасить экран красным цветом и посредине экрана желтыми буквами на синем фоне написать "Вход".

Программа:

USES CRT;

BEGIN

TextBackground (Red);

ClrScr;

TextColor (Yellow);

TextBackground (Blue);

GotoXY(38,13);

WriteLn('Вход')

END.