Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика программирование, учебник.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
22.08 Mб
Скачать

4.5 Работа с текстом

Для вывода на экран текстового литерала или значения переменной St типа String применяют две процедуры OutText(St: string) или OutTextXY(X, Y:Integer; St:string). Отличие этих процедур состоит в следующем. Процедура OutText отображает строку St начиная с позиции, в которой располагается графический курсор. Процедура OutTextXY устанавливает графический курсор на пиксель с координатами X, Y, а затем выводит строку St.

Выбор стандартного шрифта. Процедура SetTextStyle

Для выбора стандартного шрифта используется процедура SetTextStyle(Font, Direction, Size: Word). Параметр Font определяет шрифт (см. табл. 3.5). Параметр Direction задает ориентацию выводимой строки: 0 - слева направо, 1 - снизу вверх. Размер литер шрифта определяется значением параметра Size и выбирается из ряда 1, 2, … , 10. Следует отметить, что многие графические шрифты нерусифицированны.

Таблица 3.5

Код Font

Шрифт

Образец шрифта

Размер, Size

0

8  8 битовый

2

1

Штриховой

4

2

Малый

6

3

Сансериф

4

4

Готический

4

Пример 25. Образцы шрифтов получить с помощью следующей программы.

PROGRAM PR25;

Uses CRT, GRAPH;

Var dr, md: integer; ch: char;

Begin

dr := detect; INITGRAPH (dr, md, 'd:\tp\bgi');

SetBkColor(7); ClearDevice; SetColor(1);

SetTextStyle(0,0,2); OutTextXY(100,100,'Пример 0123456789');

SetTextStyle(1,0,4); OutTextXY(100,150,'Text 0123456789');

SetTextStyle(2,0,6); OutTextXY(100,200,'Text 0123456789');

SetTextStyle(3,0,4); OutTextXY(100,250,'Text 0123456789');

SetTextStyle(4,0,4); OutTextXY(100,300,'Text 0123456789');

ch := readkey;

End.

Коррекция стандартного шрифта. Процедура SetUserCharSize

Программист имеет возможность изменить размеры литер выбранного стандартного шрифта выводимой строки с помощью процедуры SetUserCharSize(MX, DX, MY, DY: Word).

Параметры MX и DX представляют собой целые числа, управляющие размером текста по оси X:

MX = 1, DX = 1 - по горизонтали текст не изменяет своей ширины;

MX = 2, DX = 1 - текст по горизонтали в два раза шире;

MX = 1, DX = 2 - текст по горизонтали сжимается в два раза;

MX = 3, DX = 1 - текст по горизонтали в три раза шире;

MX = 1, DX = 3 - текст по горизонтали сжимается в три раза и т.д.

Параметры MY и DY представляют собой целые числа, управляющие размером текста по оси Y. Принцип расширения / сжатия аналогичный, рассмотренному выше, для оси X.

Вывод числовых величин на экран

Стандартных процедур для вывода числовых величин в графическом режиме работы экрана не предусмотрено. Поэтому программист должен в своей программе преобразовать целые или вещественные числа в строку текста, а затем, используя процедуры OutText, OutTextXY отобразить эту строку на экране.

Имеет смысл разработать свои собственные функции для преобразования числовых величин в строки. В качестве примера приведем две функции - RealStr и IntStr, которые преобразуют в строку вещественное R и целое L числа, соответственно.

Function RealStr(R:Real; Dig,Dec:Integer):String;

Var Buf:String[20];

Begin

Str(R:Dig:Dec, Buf);

RealStr:=Buf

End;

Параметры Dig и Dec в функции RealStr определяют формат (внешний вид) отображаемого вещественного числа R и задают общее количество литер и число значащих разрядов после десятичной точки. Функция IntStr имеет только один параметр форматирования Dig, не превышающий 10, который определяет ширину выводимого целого числа (в литерах).

Function IntStr(L,Dig:Integer):String;

Var Buf:String[10];

Begin

Str(L:Dig, Buf);

IntStr:=Buf

End;

Пример 26. Составить программу для вывода целых чисел 100, 200, 300, 400, 500, а так же вещественных чисел -1.000, -1.105, -1.210, -1.315, -1.420, -1.525, -1.630 - как показано на рис. 3.16.

Рис. 3.16 Результат работы программы PR26

PROGRAM PR26;

Uses CRT, GRAPH;

Var dr, md:integer; ch:char; I,L:Integer; VOL:String; R:REAL;

Function IntStr(L, Dig: Integer): String;

Var Buf: String[10];

Begin Str(L: Dig, Buf); IntStr := Buf; End;

Function RealStr(R: Real; Dig, Dec: Integer): String;

Var Buf: String[20];

Begin Str(R: Dig: Dec, Buf); RealStr := Buf; End;

Begin

dr := detect; INITGRAPH (dr, md, 'd:\tp\bgi');

SetBkColor(7); ClearDevice; SetColor(1);

SetTextStyle(1, 0, 2);

FOR I := 0 to 4

DO begin

L:=100 + I*100; VOL := IntStr(L, 3);

OutTextXY(50, 50 + I*20, VOL);

END;

SetTextStyle(1, 1, 1);

FOR I := 0 to 6

DO begin

R:=-1.0-I*0.105;

VOL:=RealStr(R, 6, 3);

OutTextXY(150 + I*20, 90, VOL);

END;

ch:=readkey;

END.