TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

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.

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz