TURBO PASCAL |
Новости |
1. 15. 3. 4. Работа с текстом в графическом режиме
Для вывода на экран текста в
графическом режиме используются следующие
процедуры:
OutText(S); - вывод
строки S (типа string) в текущей позиции
курсора.
OutTextXY(x,y,S);
-
вывод строки S в позиции с
координатами (x, y).
Строку S можно определять явно в виде
символов, заключенных
в апострофы, например,
OutText('Sample
1');,
или как переменную (константу) типа string.
Если требуется вывести значение
переменной числового типа,
то необходимо приме-нить процедуру ее
преобразования в строковый тип.
Например: Str(x:10:5,S); -
определяем переменную "S" (типа string),
полученную преобразованием переменной
"x" (вещественного типа) по указанному
формату.
Перечислять несколько переменных через
запятые (подобно параметрам функций write и
writeln) в графических функциях вывода текста
не допускается. При выводе нескольких строковых
переменных они соединяются знаком "+" ,
например: OutText('x='+ S);
Для установки стиля
вывода текста используется процедура
SetTextStyle(F, D, Z); где F -
номер шрифта, D -
направление вывода надписи,
Z - увеличение размера
относительно базового варианта.
Параметры F, D, Z - типа Word.
Шрифт в графическом режиме может
создаваться двумя методами.
В первом типе шрифта - матричном,
берется стандартный шрифтовой набор BIOS
ПК, где каждому
символу соответствует матрица 8*8
пикселов. Матричный
шрифт используется по умолчанию.
Изменение размера матричного шрифта
производится увеличением исходной матрицы
в N-раз: 8N*8N пикселов.
При увеличении размера явно
проявляется "грубость" матричного
шрифта.
Второй тип шрифтов -
векторный (штриховой).
При этом буквы рисуются как
совокупность отрезков,
соединяющих узловые точки букв.
Качество в этом случае от размера не
зависит. Однако вывод текста векторными
шрифтами более медленный,
чем матричным. В стандартном наборе BGI
определено:
F = 0 (DefaultFont) -
8х8 пикселов -
матричный шрифт,
векторные шрифты:
F = 1
(TriplexFont) - триплекс (полужирный),
F = 2
(SmallFont)
- уменьшенный,
F = 3
(SansSerifFont) -
прямой (книжный),
F = 4
(GothicFont) - готический. Направление
шрифта: D= 0 - по горизонтали слева
направо,
D= 1 -
по вертикали снизу вверх,
символы повернуты на 900.
Увеличение размера Z
варьируется от 1 до 31 для матричного шрифта
и от 1 до 10 для векторных шрифтов. Причем
базовый размер соответствует для
матричного шрифта Z= 1, для
векторного шрифта Z= 4. При
Z= 0 базовый размер устанавливается по
умолчанию.
Для
векторного шрифта, можно
изменить его пропорции относительно
базового размера процедурой SetUserCharSize(XN,
X, YN, Y); При этом (XN/X) -
множитель для изменения ширины символов,
(YN/Y) - множитель для изменения
высоты символов. Параметры
XN, X, YN, Y - типа Word.
Текст можно выравнивать относительно
позиции его вывода с помощью процедуры
(0,2)
(1,2)
(2,2) SetTextJustify(H,
V); *
*
*
(0,1)*_ЦЕНТРИРУЕМЫЙ ТЕКСТ*(2,1)
*
*
* Выравнивание по
горизонтали: (0,0)
(1,0)
(2,0)
H = 0 - текст справа от позиции вывода,
В скобках указаны значения H, V.
H = 1 - центрирование текста,
H = 2 - текст слева от позиции вывода.
Выравнивание по
вертикали:
V = 0 - текст выше позиции вывода,
V = 1 - центрирование текста,
V = 2 - текст ниже позиции вывода.
По умолчанию установлено H=
0, V= 2.
Длину строки S (в
пикселах) можно определить функцией TextWidth(S);
Высота строки S
определяется функцией TextHeight(S);
Если строка не помещается в области
экрана, то в случае
матричного шрифта эта строка не выводится,
а для векторных шрифтов часть строки
отсекается. Цвет
текста в
графике устанавливается процедурой SetColor(N);
где N-номер цвета. { --------
Пример программы, демонстрирующей
различные шрифты: --------- } uses Graph; var Gd, Gm,
k, X, Y, Size: integer; S:
string; begin Gd:= Detect;
InitGraph(Gd, Gm, 'c:\tp7\bgi');
X:= 0;
Y:= 0; {
начальные координаты вывода текста }
for Size:= 1 to 10 do begin
k:= 0; { перебор
размеров
шрифта } SetTextStyle(k,0,Size);
Str(Size,S);{ пишем матричным
шрифтом } OutTextXY(X,
Y, 'Size=' + S);
Y:=
Y + TextHeight('S') + 1 { смещение
по "Y" на высоту буквы "S" }
end;
Readln; ClearDevice;
SetTextJustify(1,2);
{
выравнивание по центру }
for k:= 1 to 4 do begin
{ пишем векторными шрифтами } Y:=
0; SetColor(k+8); for
Size:=1 to 10 do begin {
перебор размеров
шрифта }
SetTextStyle(k, 0, Size); Str(Size,
S);
OutTextXY( GetmaxX div 2, Y,
'Size='+S);
Y:= Y + TextHeight('S') + 1;
end;
Readln; ClearDevice
end; CloseGraph
end. |
(с) Все права защищены. По всем интересующим вопросам прошу писать электронный адрес |