19.9.4. Размер букв и его масштабирование
19.9.4.1. Размер букв и строк. Всегда важно знать вертикальный и горизонтальный размер выводимой строки в пикселах. Это позволяет располагать строки пропорционально разрешающей способности графического режима, вычислять «текстовую» емкость окна и т.п. Функции
- 465 -
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 есть одна особенность: выводимая текстовая строка всегда обрезается по границе графического окна. Более
- 466 -
того, если активным является матричный шрифт (DefaultFont), то «вылезающая» строка вообще не появляется на экране. Решать подобные проблемы можно, точно рассчитывая место выводимых в графике строк.
19.9.4.2. Масштабирование штриховых шрифтов. Размер букв (высота и ширина) штриховых шрифтов (и только их) может задаваться процедурой
SetUserCharSize( multX, divX, multY, divY : Word )
Она позволяет оперативно менять размер шрифта, установленный процедурой SetTextStyle. Отношение (multX/divX) задает масштабирование ширины начертания шрифта, а отношение (multY/divY) выражает масштаб изменения высоты шрифта. Например, задание параметров multX=3 и divX=1, говорит о том, что буквы выводимого шрифта будут в три раза шире нормы.