ContextNodeBaseCollection Class
Contains a collection of ContextNodeBase objects that are the result of an ink analysis.
Namespace: System.Windows.Ink.AnalysisCore
Assembly: IACore (in IACore.dll)
Syntax
'Declaration
Public Class ContextNodeBaseCollection _
Implements ICollection, IEnumerable
'Usage
Dim instance As ContextNodeBaseCollection
public class ContextNodeBaseCollection : ICollection,
IEnumerable
public ref class ContextNodeBaseCollection : ICollection,
IEnumerable
public class ContextNodeBaseCollection implements ICollection, IEnumerable
Examples
The following example shows how to loop through a ContextNodeBaseCollection from the InkAnalyzerBase. FindNodesOfType method of an InkAnalyzerBase named theInkAnalyzerBase. The example loops through all of the line nodes and, if two ink word nodes exist with the same word, it marks them as red.
' If two identical ink words occur next to each other, mark them as red.
' Note: This doesn't actually look for pairs that go across two lines.
Dim lines As ContextNodeBaseCollection = _
theInkAnalyzerBase.FindNodesOfType(System.Windows.Ink.AnalysisCore.ContextNodeTypeBase.Line)
For Each lineNode As ContextNodeBase In lines
Dim previousWord As ContextNodeBase = Nothing
Dim previousWordRecognizedString As String = ""
For Each inkWord As ContextNodeBase In _
theInkAnalyzerBase.FindNodesOfType(ContextNodeTypeBase.InkWord, lineNode)
Dim inkWordRecognizedString As String = ""
If inkWord.ContainsPropertyData(PropertyGuidsForContextNodesBase.RecognizedString) Then
inkWordRecognizedString = _
CType(inkWord.GetPropertyData(PropertyGuidsForContextNodesBase.RecognizedString), String)
End If
' TODO: I think I can get rid of this and just assign the previous string
' to the current string
If Not previousWord Is Nothing Then
previousWordRecognizedString = _
CType(previousWord.GetPropertyData(PropertyGuidsForContextNodesBase.RecognizedString), String)
End If
If previousWordRecognizedString <> "" Then
Dim previousWordStrokes As Strokes = theInk.CreateStrokes(previousWord.GetStrokeIds())
Dim inkWordStrokes As Strokes = theInk.CreateStrokes(previousWord.GetStrokeIds())
For Each aStroke As Stroke In previousWordStrokes
aStroke.DrawingAttributes = New DrawingAttributes(Color.Red)
Next aStroke
For Each aStroke As Stroke In inkWordStrokes
aStroke.DrawingAttributes = New DrawingAttributes(Color.Red)
Next aStroke
End If
previousWord = inkWord
Next inkWord
Next lineNode
// If two identical ink words occur next to each other, mark them as red.
// Note: This doesn't actually look for pairs that go across two lines.
ContextNodeBaseCollection lines =
theInkAnalyzerBase.FindNodesOfType(System.Windows.Ink.AnalysisCore.ContextNodeTypeBase.Line);
foreach (ContextNodeBase lineNode in lines)
{
ContextNodeBase previousWord = null;
string previousWordRecognizedString = "";
foreach (ContextNodeBase inkWord in
theInkAnalyzerBase.FindNodesOfType(ContextNodeTypeBase.InkWord, lineNode))
{
string inkWordRecognizedString = "";
if (inkWord.ContainsPropertyData(PropertyGuidsForContextNodesBase.RecognizedString))
{
inkWordRecognizedString =
(string)inkWord.GetPropertyData(PropertyGuidsForContextNodesBase.RecognizedString);
}
// TODO: I think I can get rid of this and just assign the previous string
// to the current string
if (previousWord != null &&
previousWord.ContainsPropertyData(PropertyGuidsForContextNodesBase.RecognizedString))
{
previousWordRecognizedString =
(string)previousWord.GetPropertyData(PropertyGuidsForContextNodesBase.RecognizedString);
}
if (previousWordRecognizedString != "" &&
previousWordRecognizedString == inkWordRecognizedString)
{
Strokes previousWordStrokes = theInk.CreateStrokes(previousWord.GetStrokeIds());
Strokes inkWordStrokes = theInk.CreateStrokes(previousWord.GetStrokeIds());
foreach (Stroke stroke in previousWordStrokes)
stroke.DrawingAttributes = new DrawingAttributes(Color.Red);
foreach (Stroke stroke in inkWordStrokes)
stroke.DrawingAttributes = new DrawingAttributes(Color.Red);
}
previousWord = inkWord;
}
}
Inheritance Hierarchy
System.Object
System.Windows.Ink.AnalysisCore.ContextNodeBaseCollection
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
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