[]
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 |