<<< BACK NEXT >>>

Фонты и управление ими

CreateFont - прямой аналог функции CreateFont в Win 32

CreateFont( <логическая высота фонта>,
            <средняя логическая ширина знака>,
            <угол испускания>,
            <угол орентации базы>,
            <ширина>,
            <плотность фонта>,
            <флаг "italic">,
            <флаг "underline">,
            <флаг "strikeout">,
            <идентификатор множества символов>,
            <точность вывода>,
            <точность урезания>,
            <качество вывода>,
            <шаг и семейство>,
            <имя гарнитуры шрифта>
          )

Подробное описание функции можно найти в любой документации по Win32 API.

fnt2 := CreateFont( 14,  8,  0,  0,  500 ,  1,  1,  0, =>
                    RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, =>
                    CLIP_DEFAULT_PRECIS, =>
                    DEFAULT_QUALITY, =>
                    DEFAULT_PITCH, =>
                    "ARIAL NEW" =>
                  )

FontDescr(
            <логическая высота фонта>,
            <средняя логическая ширина знака>,
            <угол испускания>,
            <угол орентации базы>,
            <ширин>,
            <плотность фонта>,
            <флаг "italic">,
            <флаг "underline">,
            <флаг "strikeout">,
            <идентификатор множества символов>,
            <точность вывода>,
            <точность урезания>,
            <качество вывода>,
            <шаг и семейство>,
            <имя гарнитуры шрифта>
         )

SetFontBy() - установка фонта с предварительно заполнеными атрибутами функцией FontDescr.

SelectFont( <идентификатор фонта> ) - переключение фонта.
Простейший вывод на экран осуществляется функцией
   OutText( <коорд. Y>, <коорд. X>, <строка> [, <длина>, <цвет>, <фонт>] )
<коорд. Y>, <коорд. X>

GetStringSize( <строка или символ>, <длина> [, <фонт>] )
<строка или символ> - именно строка или символ,
<длина> - число - количество символов строки, размер в пикселах которых должен быть измерен; если NULL, то берется вся строка.
<фонт> - указывается идентификатор фонта.
Высота и ширина строки возвращается в пикселах. Раздельно выбираются с помощью IntLeft(), возвращающей ширину, и IntRight(), возвращающей высоту.

    x := GetStringSize( "Hello !", NULL, fnt )
    y := IntRight( x )
или
    y := IntRight( x := GetStringSize( " World ", NULL, fnt ) )

OutFormatString(
                 <Y0>,
                 <X0>,
                 <строка>,
                 <длина>,
                 <цвет>,
                 <фонт>
                 [ { , <строка>,
                       <длина>,
                       <цвет>,
                       <фонт>
                   }
                 ]
               )

выводит в координаты Y0, X0 набор строк, каждая из которых представлена собственным цветом и фонтом, как одну строку на экран. Высота такой строки равна максимальной высоте всех заданных фонтов. Возвращает ширину в пикселах выводимой строки.

DrawFormatStr(
                <Y0>,
                <X0>,
                <Y1>,
                <X1>,
                <строка>,
                <длина>,
                <цвет>,
                <фонт>,
                <опции>
                [ { , <строка>,
                      <длина>,
                      <цвет>,
                      <фонт>,
                      <опции>
                  }
                ]
             )

выводит в прямоугольник с координатами Y0, X0, Y1, X1 набор строк, каждая из которых представлена собственным цветом и фонтом, как одну строку на экран. <опции> определяют размещения фрагмента в собственной части области,
начало которой определяется с конца предыдущей: к началу предыдущего прибавляется его длина + 1 пиксел.
Возвращает ширину в пикселах выведенной строки в целом. Подробное описание опций вы найдете в любом описании функции DrawTextEx Win32 API. Здесь перечислены опции, макросы которых представлены в файле CAPER_GDI.ch :

              DT_TOP
              DT_LEFT
              DT_CENTER
              DT_RIGHT
              DT_VCENTER
              DT_BOTTOM
              DT_WORDBREAK
              DT_SINGLELINE
              DT_EXPANDTABS
              DT_TABSTOP
              DT_NOCLIP
              DT_EXTERNALLEADING
              DT_CALCRECT
              DT_NOPREFIX
              DT_INTERNAL
              DT_EDITCONTROL
              DT_PATH_ELLIPSIS
              DT_END_ELLIPSIS
              DT_MODIFYSTRING
              DT_RTLREADING
              DT_WORD_ELLIPSIS

DrawFormatStrA(
                 <Y0>,
                 <X0>,
                 <Y1>,
                 <X1>,
                 <строка>,
                 <массив>
              )

функция подобна DrawFormatStr, за исключением того, что структурированный вывод указанной строки осуществляется посредством описателей в массиве <массив>. <Массив> должен быть организован как набор пятиэлементных
совокупностей типа 'I' (к примеру, AR := array( 'I', 0, 20, 5 ) ).
AR должен быть предварительно заполнен компонентами <команда>, <строка>, <длина>, <цвет>, <фонт>
<команда> - число 1 или 99. Последнее указывает конец массива и инициирует завершение функции.
<позиция>  - число - позиция в <строка>, с которой выводится фрагмент длиной <длина> с заданными атрибутами.
<длина>    - длина выводимого фрагмента строки.
<цвет>     - цвет вывода
<фонт>     - идентификатор фонта.

Итак, функцияя выводит в прямоугольник с координатами Y0, X0, Y1, X1 структурированную массивом строку как одно целое. Каждый фрагмент строки представлен собственным цветом и фонтом. Возвращает ширину в пикселах выведенной строки в целом.

SetTextColor( <цвет> )  - установливает цвет текста и возвращает старый.

GetTextCol() - возвращает текущий цвет текста

CharWidth( <строка> ) - возвращает ширину первого знака строки.

Примеры:

   CharWidth( "ABC" ) вернет ширину в пикселах сивола 'A';
   string := "ABC"
   CharWidth( string[2] ) вернет ширину в пикселах сивола 'B';

<<< BACK NEXT >>>