Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Процедура SetTextStyle



Устанавливает стиль текстового вывода на графический экран. Заголовок:

Procedure SetTextStyle(Font,Direct,Size: Word);

Здесь Font – код (номер) шрифта; Direct – код направления; Size – код размера шрифта.

Для указания кода шрифта можно использовать следующие предварительно определенные константы:

const

DefaultFont = 0;{Точечный шрифт 8x8}

TriplexFont = 1;{Утроенный шрифт TRIP.CHR}

SmallFont = 2;{Уменьшенный шрифт LITT.CHR}

SansSerifFont = 3;{Прямой шрифт SANS.CHR}

GothicFont = 4;{Готический шрифт GOTH.CHR}

Заметим, что эти константы определяют все шрифты для версий 4.0, 5.0, 5.5 и 6.0. В версии 7,0 набор шрифтов значительно расширен, однако для новых шрифтов не предусмотрены соответствующие мнемонические константы. В этой версии помимо перечисленных вы можете при обращении к SetTextStyle использовать такие номера шрифтов:

Номер Файл Краткое описание
  scri.chr «Рукописный» шрифт
  simp.chr Одноштриховый шрифт типа Courier
  tscr.chr Красивый наклонный шрифт типа Times Italic
  Icom.chr Шрифт типа Times Roman
  euro. chr Шрифт типа Courier увеличенного размера
  bold.chr Крупный двухштриховый шрифт

Шрифт DefaultFont входит в модуль Graph и доступен в любой момент. Это – единственный матричный шрифт, т.е. его символы создаются из матриц 8x8 пикселей. Все остальные шрифты – векторные: их элементы формируются как совокупность векторов (штрихов), характеризующихся направлением и размером. Векторные шрифты отличаются более богатыми изобразительными возможностями, но главная их особенность заключается в легкости изменения размеров без существенного ухудшения качества изображения. Каждый из этих шрифтов размещается в отдельном дисковом файле. Если вы собираетесь использовать какой-либо векторный шрифт, соответствующий файл должен находиться в вашем каталоге, в противном случае вызов этого шрифта игнорируется и подключается стандартный.

Заметим, что шрифт DefaultFont создается графическим драйвером в момент инициации графики на основании анализа текстового шрифта. Поэтому, если ваш ПК способен выводить кириллицу в текстовом режиме, вы сможете с помощью этого шрифта выводить русскоязычные сообщения и в графическом режиме. В остальных шрифтах эта возможность появляется только после их модификации.

Для задания направления выдачи текста можно использовать константы:

const

HorizDir = 0;{Слева направо}

VertDir = 1;{Снизу вверх}

Как видим, стандартные процедуры OutText и OutTextXY способны выводить сообщения лишь в двух возможных направлениях – слева направо или снизу вверх. Зная структуру векторных шрифтов, нетрудно построить собственные процедуры вывода, способные выводить сообщения в любом направлении.

Каждый шрифт способен десятикратно изменять свои размеры. Размер выводимых символов кодируется параметром Size, который может иметь значение в диапазоне от 1 до 10 (точечный шрифт – в диапазоне от 1 до 32). Если значение параметра равно 0. устанавливается размер 1, если больше 10 – размер 10. Минимальный размер шрифта. при котором еще отчетливо различаются все его детали, равен 4 (для точечного шрифта – 1).

Следующая программа демонстрирует различные шрифты. Их размер выбран так. чтобы строки имели приблизительно одинаковую высоту. Перед исполнением программы скопируйте все шрифтовые файлы с расширением.CHR в текущий каталог.

Uses Graph, CRT;

const

FontNames: array [1..10] of String[4] =

('TRIP', 'LITT'' SANS ', ' GOTH ', 'SCRI ', ' SIMP ','TSCR ', ' LOOM ', ' EURO',' BOLD ');

Tabl = 50;

Tab2 = 150;

Tab3 =220;

var

d, r, Err,{Переменные для инициации графики}

Y,dY,{Ордината вывода и ее приращение}

Size,{Размер символов}

MaxFont,{Максимальный номер шрифта}

k: Integer;{Номер шрифта}

NT, SizeT, SynibT: String;{Строки вывода}

c: Char;

{-------------------}

Procedure OutTextWithTab (S1, S2, S3, S4: String);

{Выводит строки S1..S4 с учетом позиций табуляции Таb1..ТаbЗ}

begin

MoveTo((Tab1-TextWidth(Sl)) div2,Y);

OutText (S1);

MoveTo(Tabl+(Tab2-Tabl-TextWidth(S2)) div2,Y);

OutText (S2);

MoveTo(Tab2+(Tab3-Tab2-TextWidth(S3)) div 2,Y);

OutText(S3);

if S4='Symbols' then {Заголовок колонки Symbols}

MoveTo((Tab3+GetMaxX-TextWidth(S4)) div 2,Y)

else {Остальные строки}

MoveTo(Tab3+3,Y);

OutText(S4)

end;

{------------}

begin

{Инициируем графику}

InitGraph(d,r, ' ');

Err:= GraphResult; if ErrogrOk then

WriteLn(GraphErrorMsg(Err))

else

begin

{Определяем количество шрифтов:}

{$IFDEF VER70'}

MaxFont:= 10;.

{$ELSE}

MaxFont:= 4;

{$ENDIF}

SetTextStyle(l,0,4);

Y:= 0;

OutTextWi thTab('N','Name',Size','Symbols');

{Определяем высоту Y линии заголовка}

Y:= 4*TextHeight('Z') div3;

Line(0,Y,GetMaxX,Y);

{Определяем начало Y таблицы и высоту dY каждой строки}

Y:= 3*TextHeight('Z') div 2;

dY:= (GetMaxY-Y) div (MaxFont);

{Готовим строку символов}

SymbT:= '';

for с:= 'a' to 'z' do

SymbT:= SymbT+c;

{Цикл вывода строк таблицы}

for k:= 1 to MaxFont do

begin

Size:= 0;

{Увеличиваем размер до тех пор, пока высота строки не станет приблизительно равна dY}

repeat

inc(Size);

SetTextStyle(k,0,Size+1);

until (TextHeight('Z')>=dY) or (Size=10)

or (Textwidth(FontNames[k])>(Tab2-Tab1));

{Готовим номер NT и размер SizeT шрифта}

Str(k,NT);

Str(Size,SizeT);

{Выводим строку таблицы}

SetTextStyle(k,HorizDir,Size);

OutTextWithTab(NT,FontNames[k],SizeT,SymbT);

inc(Y,dY)

end;

{Рисуем линии рамки}

Rectangle(0,0,GetMaxX,GetMaxY);

Line(Tab1,0,Tabl,GetMaxY);

Line(Tab2,0,Tab2,GetMaxY);

Line(Tab3,0,ТаЬЗ,GetMaxY);

{Ждем инициативы пользователя}

ReadLn;

CloseGraph

end

end.





Дата публикования: 2014-11-04; Прочитано: 221 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.01 с)...