WritingRegionNode.GetTextRangeFromNodes Method
Given a collection of ContextNode objects, this method finds corresponding text range in the recognized string.
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 WritingRegionNode
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 void GetTextRangeFromNodes (
ContextNodeCollection subTree,
/** @attribute OutAttribute() */ /** @ref */ int start,
/** @attribute OutAttribute() */ /** @ref */ int length
)
Not applicable.
Parameters
- subTree
The collection of ContextNode objects that are descendants of the WritingRegionNode.
- start
The start of the text range.
- length
The length of the text range.
Remarks
If the subTree contains a ContextNode that is not a descendant of the WritingRegionNode, an ArgumentException is thrown.
If the subTree contains ContextNode objects that are not consecutive, the smallest text range that covers all of the ContextNode objects is returned.
Example
The following example finds the last paragraph in a WritingRegionNode, writingRegion
. It then finds the text range that corresponds to this paragraph, puts the value of GetRecognizedString into a TextBox, selectedResultsTextBox
, and then selects the text that corresponds to the last paragraph.
Dim paragraphs As ContextNodeCollection = theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.Paragraph)
Dim lastParagraph As ParagraphNode = Nothing
Dim maxY As Integer = Integer.MinValue
Dim paragraph As ParagraphNode
For Each paragraph In paragraphs
If paragraph.Location.GetBounds().Bottom > maxY Then
maxY = paragraph.Location.GetBounds().Bottom
lastParagraph = paragraph
End If
Next paragraph
If lastParagraph Is Nothing Then
Return
End If
' Create a collection to hold this line
Dim lastParagraphCollection As New ContextNodeCollection(theInkAnalyzer)
lastParagraphCollection.Add(lastParagraph)
' Find corresponding start and length
Dim start, length As Integer
writingRegion.GetTextRangeFromNodes(lastParagraphCollection, start, length)
' Select this in the text box
selectedResultsTextBox.Text = writingRegion.GetRecognizedString()
selectedResultsTextBox.Select(start, length)
ContextNodeCollection paragraphs =
theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.Paragraph);
ParagraphNode lastParagraph = null;
int maxY = int.MinValue;
foreach (ParagraphNode paragraph in paragraphs)
{
if (paragraph.Location.GetBounds().Bottom > maxY)
{
maxY = paragraph.Location.GetBounds().Bottom;
lastParagraph = paragraph;
}
}
if (lastParagraph == null)
return;
// Create a collection to hold this line
ContextNodeCollection lastParagraphCollection = new ContextNodeCollection(theInkAnalyzer);
lastParagraphCollection.Add(lastParagraph);
// Find corresponding start and length
int start, length;
writingRegion.GetTextRangeFromNodes(lastParagraphCollection, out start, out length);
// Select this in the text box
selectedResultsTextBox.Text = writingRegion.GetRecognizedString();
selectedResultsTextBox.Select(start, length);
Platforms
Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.
Version Information
.NET Framework
Supported in: 3.0
See Also
Reference
WritingRegionNode Class
WritingRegionNode Members
Microsoft.Ink Namespace