次の方法で共有


ContextNodeBaseCollection クラス

インク分析の結果である ContextNodeBase オブジェクトのコレクションが含まれます。

名前空間 :  System.Windows.Ink.AnalysisCore
アセンブリ :  IACore (IACore.dll 内)

構文

'宣言
Public Class ContextNodeBaseCollection _
    Implements ICollection, IEnumerable
'使用
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

次の例では、theInkAnalyzerBase という名前の InkAnalyzerBaseInkAnalyzerBase. FindNodesOfType メソッドで得た ContextNodeBaseCollection をループする方法を示します。この例では、すべてのライン ノードをループし、同じ単語が含まれる 2 つのインク単語ノードが存在する場合は、赤色でマークします。

' 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;
    }
}

継承階層

System.Object
  System.Windows.Ink.AnalysisCore.ContextNodeBaseCollection

スレッド セーフ

この型のすべてのパブリック static (Visual Basic では Shared) メンバは、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。

プラットフォーム

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 3.0

参照

参照

ContextNodeBaseCollection メンバ

System.Windows.Ink.AnalysisCore 名前空間