ContextNodeBaseCollection (Clase)
Actualización: noviembre 2007
Contiene una colección de objetos ContextNodeBase que son resultado de un análisis de entrada manuscrita.
Espacio de nombres: System.Windows.Ink.AnalysisCore
Ensamblado: IACore (en IACore.dll)
Sintaxis
'Declaración
Public Class ContextNodeBaseCollection _
Implements ICollection, IEnumerable
'Uso
Dim instance As ContextNodeBaseCollection
public class ContextNodeBaseCollection : ICollection,
IEnumerable
public ref class ContextNodeBaseCollection : ICollection,
IEnumerable
public class ContextNodeBaseCollection implements ICollection,
IEnumerable
public class ContextNodeBaseCollection implements ICollection, IEnumerable
Ejemplos
En el ejemplo siguiente, se muestra cómo recorrer en bucle un objeto ContextNodeBaseCollection desde el método InkAnalyzerBase. FindNodesOfType de un objeto InkAnalyzerBase denominado theInkAnalyzerBase. En el ejemplo se recorren en bucle todos los nodos de línea y, si hay dos nodos de palabras de entradas manuscritas en la misma palabra, los marca en rojo.
' 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;
}
}
Jerarquía de herencia
System.Object
System.Windows.Ink.AnalysisCore.ContextNodeBaseCollection
Seguridad para subprocesos
Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Plataformas
Windows Vista, Windows XP SP2, Windows Server 2003
.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Información de versión
.NET Framework
Compatible con: 3.0