Share via


RootNode.GetTextRangeFromNodes Method

Finds the text range in the recognized string that corresponds to a collection of ContextNode objects that are descendants of the RootNode.

Namespace:  Microsoft.Ink
Assembly:  Microsoft.Ink.Analysis (in Microsoft.Ink.Analysis.dll)

Syntax

'Declaration
Public Sub GetTextRangeFromNodes ( _
    subTree As ContextNodeCollection, _
    <OutAttribute> ByRef start As Integer, _
    <OutAttribute> ByRef length As Integer _
)
'Usage
Dim instance As RootNode 
Dim subTree As ContextNodeCollection 
Dim start As Integer 
Dim length As Integer

instance.GetTextRangeFromNodes(subTree, _
    start, length)
public void GetTextRangeFromNodes(
    ContextNodeCollection subTree,
    out int start,
    out int length
)
public:
void GetTextRangeFromNodes(
    ContextNodeCollection^ subTree, 
    [OutAttribute] int% start, 
    [OutAttribute] int% length
)
public function GetTextRangeFromNodes(
    subTree : ContextNodeCollection, 
    start : int, 
    length : int
)

Parameters

Remarks

If the subTree contains a ContextNode object that is not a descendant of the RootNode, then an ArgumentException exception is thrown.

If the subTree parameter contains ContextNode objects that are not consecutive, then the smallest text range that covers all of the ContextNode objects is returned.

Examples

The following example takes a RootNode, theRootNode, from an InkAnalyzer, theInkAnalyzer, and finds the last WritingRegionNode by selecting the writing region with the lowest bounds. It then finds the text range that corresponds to this writing region, puts the value of GetRecognizedString into a TextBox, theResultsTextBox, and selects the text that corresponds to that last writing region.

Dim theRootNode As RootNode = CType(theInkAnalyzer.RootNode, RootNode)
Dim regions As ContextNodeCollection = _
    theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.WritingRegion)
Dim lastRegion As WritingRegionNode = Nothing 
Dim maxY As Integer = Integer.MinValue
Dim aRegion As WritingRegionNode
For Each aRegion In regions
    If aRegion.Location.GetBounds().Bottom > maxY Then
        maxY = aRegion.Location.GetBounds().Bottom
        lastRegion = aRegion
    End If 
Next aRegion

If lastRegion Is Nothing Then 
    Return 
End If 
' Create a collection to hold this line 
Dim lastRegionCollection As New ContextNodeCollection(theInkAnalyzer)
lastRegionCollection.Add(lastRegion)

' Find corresponding start and length 
Dim start, length As Integer
theRootNode.GetTextRangeFromNodes(lastRegionCollection, start, length)

' Select this in the text box
theResultsTextBox.Text = theRootNode.GetRecognizedString()
theResultsTextBox.Select(start, length)
         RootNode theRootNode = (RootNode)theInkAnalyzer.RootNode;
            ContextNodeCollection regions =
                theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.WritingRegion);
            WritingRegionNode lastRegion = null;
            int maxY = int.MinValue;
            foreach (WritingRegionNode region in regions)
            {
                if (region.Location.GetBounds().Bottom > maxY)
                {
                    maxY = region.Location.GetBounds().Bottom;
                    lastRegion = region;
                }
            }

            if (lastRegion == null)
                return;

            // Create a collection to hold this line
            ContextNodeCollection lastRegionCollection = 
                new ContextNodeCollection(theInkAnalyzer);
            lastRegionCollection.Add(lastRegion);

            // Find corresponding start and length 
            int start, length;
            theRootNode.GetTextRangeFromNodes(lastRegionCollection, out start, out length);

            // Select this in the text box
            theResultsTextBox.Text = theRootNode.GetRecognizedString();
            theResultsTextBox.Select(start, length);

Platforms

Windows 7, Windows Vista, Windows Server 2008 R2, Windows Server 2008

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

RootNode Class

RootNode Members

Microsoft.Ink Namespace