Поделиться через


Метод IDWriteTextLayout::HitTestTextRange (dwrite.h)

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

Функция возвращает E_NOT_SUFFICIENT_BUFFER, эквивалентную HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), если размер буфера hitTestMetrics слишком мал для хранения всех регионов, вычисляемых функцией. В этом случае функция задает выходное значение *actualHitTestMetricsCount в число вычисляемых геометрических объектов.

Приложение отвечает за выделение нового буфера большего размера и повторный вызов функции.

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

maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth

где lineCount получается из значения выходного аргумента *actualLineCount (из функции IDWriteTextLayout::GetLineLengths), а значение maxBidiReorderingDepth — из DWRITE_TEXT_METRICS структуры выходного аргумента *textMetrics (из функции IDWriteFactory::CreateTextLayout).

Синтаксис

HRESULT HitTestTextRange(
                  UINT32                  textPosition,
                  UINT32                  textLength,
                  FLOAT                   originX,
                  FLOAT                   originY,
  [out, optional] DWRITE_HIT_TEST_METRICS *hitTestMetrics,
                  UINT32                  maxHitTestMetricsCount,
  [out]           UINT32                  *actualHitTestMetricsCount
);

Параметры

textPosition

Тип: UINT32

Первая текстовая позиция указанного диапазона.

textLength

Тип: UINT32

Количество позиций указанного диапазона.

originX

Тип: FLOAT

Расположение исходного пикселя X слева от поля макета. Это смещение добавляется к возвращаемым метрикам проверки попадания.

originY

Тип: FLOAT

Расположение исходного пикселя Y в верхней части поля макета. Это смещение добавляется к возвращаемым метрикам проверки попадания.

[out, optional] hitTestMetrics

Тип: DWRITE_HIT_TEST_METRICS*

При возврате этого метода содержит указатель на буфер выходного геометрического объекта, полностью включающий указанный диапазон позиций. Размер буфера должен быть не менее maxHitTestMetricsCount.

maxHitTestMetricsCount

Тип: UINT32

Максимальное количество полей , которые могут содержаться в буферной памяти.

[out] actualHitTestMetricsCount

Тип: UINT32*

Фактическое количество геометрических объектов , удерживаемых в буферной памятиTestMetrics .

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

Тип: HRESULT

Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Требования

Требование Значение
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновлением платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header dwrite.h
Библиотека Dwrite.lib
DLL Dwrite.dll

См. также раздел

IDWriteTextLayout