[]
The application calls this function to get a set of hit-test metrics corresponding to a range of text positions. One of the main usages is to implement highlight selection of the text string. The function returns E_NOT_SUFFICIENT_BUFFER, which is equivalent to HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER), when the buffer size of hitTestMetrics is too small to hold all the regions calculated by the function. In this situation, the function sets the output value *actualHitTestMetricsCount to the number of geometries calculated. The application is responsible for allocating a new buffer of greater size and calling the function again. A good value to use as an initial value for maxHitTestMetricsCount may be calculated from the following equation: maxHitTestMetricsCount = lineCount * maxBidiReorderingDepth where lineCount is obtained from the value of the output argument *actualLineCount (from the function IDWriteTextLayout::GetLineLengths), and the maxBidiReorderingDepth value from the DWRITE_TEXT_METRICS structure of the output argument *textMetrics (from the function IDWriteFactory::CreateTextLayout).
public HitTestMetrics[] HitTestTextRange(int textPosition, int textLength, float originX, float originY)
| Type | Name | Description |
|---|---|---|
| int | textPosition | The first text position of the specified range. |
| int | textLength | The number of positions of the specified range. |
| float | originX | The origin pixel location X at the left of the layout box. This offset is added to the hit-test metrics returned. |
| float | originY | The origin pixel location Y at the top of the layout box. This offset is added to the hit-test metrics returned. |
| Type | Description |
|---|---|
| HitTestMetrics[] | a reference to a buffer of the output geometry fully enclosing the specified position range. The buffer must be at least as large as maxHitTestMetricsCount. |
HRESULT IDWriteTextLayout::HitTestTextRange([In] unsigned int textPosition,[In] unsigned int textLength,[In] float originX,[In] float originY,[Out, Buffer, Optional] DWRITE_HIT_TEST_METRICS* hitTestMetrics,[In] unsigned int maxHitTestMetricsCount,[Out] unsigned int* actualHitTestMetricsCount)
public HResult HitTestTextRange(int textPosition, int textLength, float originX, float originY, HitTestMetrics[] hitTestMetrics, int maxHitTestMetricsCount, out int actualHitTestMetricsCount)
| Type | Name | Description |
|---|---|---|
| int | textPosition | |
| int | textLength | |
| float | originX | |
| float | originY | |
| HitTestMetrics[] | hitTestMetrics | |
| int | maxHitTestMetricsCount | |
| int | actualHitTestMetricsCount |
| Type | Description |
|---|---|
| HResult |