idWriteTextLayout::HitTestTextRange 方法 (dwrite.h)

应用程序调用此函数以获取一组对应于一系列文本位置的命中测试指标。 main用法之一是实现文本字符串的突出显示选择。

当 hitTestMetrics 的缓冲区大小太小,无法容纳函数计算的所有区域时,函数返回E_NOT_SUFFICIENT_BUFFER,这等效于 HRESULT_FROM_WIN32 (ERROR_INSUFFICIENT_BUFFER) 。 在这种情况下,函数将输出值 *actualHitTestMetricsCount 设置为计算的几何图形数。

应用程序负责分配更大的新缓冲区,并再次调用函数。

可以使用以下公式计算用作 maxHitTestMetricsCount 的初始值的良好值:

maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth

其中,lineCount 是从函数 IDWriteTextLayout::GetLineLengths) 的输出参数 *actualLineCount (的值获取的,以及从函数 IDWriteFactory::CreateTextLayout) 的输出参数 *textMetrics (的 DWRITE_TEXT_METRICS 结构获取 maxBidiReorderingDepth 值。

语法

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

hitTestMetrics 在其缓冲区内存中可以容纳的最大框数。

[out] actualHitTestMetricsCount

类型: UINT32*

hitTestMetrics 在其缓冲区内存中保留的实际几何图形数。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

要求

要求
最低受支持的客户端 Windows 7、带 SP2 的 Windows Vista 和适用于 Windows Vista 的平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows Server 2008 R2、Windows Server 2008 SP2 和适用于 Windows Server 2008 的平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 dwrite.h
Library Dwrite.lib
DLL Dwrite.dll

另请参阅

IDWriteTextLayout