PureBasic

VectorTextHeight()

Синтаксис

Result.d = VectorTextHeight(Text$ [, Flags])

Описание


Измеряет высоту данного текста при использовании текущего шрифта Векторной графики.

Параметры

Text$ Текст (одна строка), высоту которого требуется измерить.
Flags (дополн.) Может быть комбинация следующих значений:
  #PB_VectorText_Default : Вернуть логическую ограничительную рамку ограничивающую текст.  
  #PB_VectorText_Visible : Вернуть видимую ограничительную рамку ограничивающую текст.
  #PB_VectorText_Offset  : Вернуть смещение ограничительной рамки из текущей позиции, а не высоты.
  #PB_VectorText_Baseline: Вернуть смещение базовой линии текста из текущей позиции.

Возвращаемое значение

Возвращает высоту указанного текста в единицах измерения устройства (поверхности) вывода Векторной графики.

Комментарии

Размеры выводимого текста могут быть определены в терминах двух ограничивающих рамок:

"Логическая ограничительная рамка" символа или текста определяет пространство, которое курсор должен считать как часть строки, чтобы правильно выводить строки текста рядом друг с другом (не впритык). Однако некоторые символы могут выходить за пределы этой рамки (например, в случае шрифтов cursive или serif). Логическая ограничительная рамка представляет интерес в определении места, где выводить текст. На примере ниже, она обозначена синим пунктиром.

"Видимая ограничительная рамка" символа или текста определяет область, в которой текст действительно нарисован. Эта область обычно больше, чем логическая ограничительная рамка. Видимые размеры текста можно получить, указав флаг #PB_VectorText_Visible. Видимые размеры текста могут быть со смещением по отношению к логическим. Это смещение можно рассчитать, указав флаг #PB_VectorText_Offset. На примере ниже, она обозначена красным пунктиром.

"Базовый уровень" определяет вертикальное расстояние от начала выведенного текста до линии, где буквы "сидят". Это полезно для вывода текста разной высоты на одной линии. Значение базового уровня для текста можно получить, указав флаг #PB_VectorText_Baseline. На примере ниже, линия базового уровня обозначена зелёным пунктиром.

В следующем примере показан пример текста с логической ограничительной рамкой синего цвета, видимой ограничительной рамкой красного цвета и расположение базовой линии зеленого цвета. Начало текста - в верхнем левом углу логической ограничительной рамки (синего цвета).

Пример

If OpenWindow(0, 0, 0, 500, 250, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    CanvasGadget(0, 0, 0, 500, 250)
    LoadFont(0, "Monotype Corsiva", 20, #PB_Font_Italic)

    If StartVectorDrawing(CanvasVectorOutput(0))

        VectorFont(FontID(0), 125)
        Text$ = "Sample"

        ; Выводим текст
        MovePathCursor(25, 25)
        DrawVectorText(Text$)

        ; Выводим логическую ограничивающую рамку
        AddPathBox(25, 25, VectorTextWidth(Text$), VectorTextHeight(Text$))
        VectorSourceColor(RGBA(0, 0, 255, 255))
        DashPath(2, 10)

        ; Выводим видимую ограничивающую рамку
        AddPathBox(25 + VectorTextWidth(Text$, #PB_VectorText_Visible|#PB_VectorText_Offset),
                  25 + VectorTextHeight(Text$, #PB_VectorText_Visible|#PB_VectorText_Offset),
                  VectorTextWidth(Text$, #PB_VectorText_Visible),
                  VectorTextHeight(Text$, #PB_VectorText_Visible))
        VectorSourceColor(RGBA(255, 0, 0, 255))
        DashPath(2, 10)

        ; Выводим базовую линию
        MovePathCursor(25, 25 + VectorTextHeight(Text$, #PB_VectorText_Baseline))
        AddPathLine(VectorTextWidth(Text$), 0, #PB_Path_Relative)
        VectorSourceColor(RGBA(0, 255, 0, 255))
        DashPath(2, 10)

        StopVectorDrawing()
    EndIf

    Repeat
        Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf

См. также

VectorTextWidth(), DrawVectorText(), DrawVectorParagraph(), VectorParagraphHeight(), VectorFont()

Поддерживаемые OS

Все

<- VectorSourceLinearGradient() - Оглавление VectorDrawing - VectorTextWidth()->