Freigeben über


ContextNode.SetStrokes-Methode

Legt die angegebenen Striche für ein ContextNode-Objekt fest.

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

Syntax

'Declaration
Public Sub SetStrokes ( _
    strokes As Strokes _
)
'Usage
Dim instance As ContextNode
Dim strokes As Strokes

instance.SetStrokes(strokes)
public void SetStrokes(
    Strokes strokes
)
public:
void SetStrokes(
    Strokes^ strokes
)
public void SetStrokes(
    Strokes strokes
)
public function SetStrokes(
    strokes : Strokes
)

Parameter

Hinweise

DirtyRegion wird von dieser Methode nicht aktualisiert.

Wenn einer der angegebenen Striche in der Strichauflistung bereits für den InkAnalyzer festgelegt wurde, wird eine ArgumentException ausgelöst.

Beispiele

Das folgende Beispiel zeigt eine Methode mit dem Namen PopulateNode aus Beispielcode, der eine System.Windows.Forms.TreeView als Dokumentmodell verwendet, um zu zeigen, wie ein Datenproxy zum Speichern oder Laden der Kontextknotenstruktur für einen InkAnalyzer verwendet werden kann. Die DocumentNodeData-Klasse speichert die ContextNode-Daten im Dokumentmodell, wenn die Tag-Eigenschaft jedes TreeNode-Objekts auf ein DocumentNodeData-Objekt festgelegt ist.

Die PopulateNode-Methode füllt ein ContextNode-Objekt durch Hinzufügen von Strichen, Eigenschaftendaten, Anmerkungstypen, untergeordneten Knoten und Links von einem InkAnalyzer-Objekt vollständig auf. Sie verwendet SetStrokes zum Hinzufügen der Striche. Die Daten stammen aus dem DocumentNodeData-Objekt, das aus dem entsprechenden TreeNode abgerufen wird.

  • this[analyzerNode.Id] ist ein Indexer für die Dokumentmodellklasse, die einem TreeNode eine Guid zuordnet. (Me(analyzerNode.Id) in VB.NET)

  • AddLinksToAnalyer ist eine Methode für die Dokumentmodellklasse, die dem ContextNode Links hinzufügt.

Nachdem der Knoten vollständig aufgefüllt wurde, wird die PartiallyPopulated-Eigenschaft auf false festgelegt. Weitere Informationen zu Datenproxys finden Sie unter Data Proxy with Ink Analysis.

Sub PopulateNode(ByVal analyzerNode As Microsoft.Ink.ContextNode, _
                 ByVal theInkAnalyzer As Microsoft.Ink.InkAnalyzer) _
                 Implements IDocumentModel.PopulateNode

    System.Diagnostics.Debug.WriteLine( _
        String.Format("IDocumentModel.PopulateNode: populate {0} {1}.", _
        TreeViewDocumentModel.GetContextNodeTypeName(analyzerNode.Type), analyzerNode.Id))

    System.Diagnostics.Debug.Indent()

    ' Get the document node associated with the analyzer node.
    Dim documentNode As TreeNode = Me(analyzerNode.Id)
    If documentNode Is Nothing Then
        Throw New ApplicationException("The requested node does not exist in the document model.")
    End If

    ' Get the data associated with the node.
    Dim nodeData As DocumentNodeData = documentNode.Tag '

    ' Copy any application specific data associated with the node to the
    ' partially populated ContextNode.
    Dim identifier As Guid
    For Each identifier In nodeData.GetPropertyDataIds()
        analyzerNode.AddPropertyData(identifier, nodeData.GetPropertyData(identifier))
    Next identifier

    ' Check if the partially populated ContextNode is an ink leaf node.
    If nodeData.IsInkLeafNode Then
        ' Add the strokes to the context node.
        analyzerNode.SetStrokes(nodeData.Strokes)
    Else
        ' Add each child subnode as a partially populated ContextNode.
        Dim documentSubNode As TreeNode
        For Each documentSubNode In documentNode.Nodes
            ' Get the DocumentNode data for the 
            Dim subNodeData As DocumentNodeData = documentSubNode.Tag

            If analyzerNode.SubNodes.IndexOf(nodeData.Id) <> -1 Then
                analyzerNode.CreatePartiallyPopulatedSubNode( _
                    subNodeData.Type, subNodeData.Id, subNodeData.Location)
            End If

        Next documentSubNode
    End If

    ' Add links to the ContextNode.
    Me.AddLinksToAnalyzer(documentNode, analyzerNode, theInkAnalyzer)

    ' Update the partially populated flag.
    analyzerNode.PartiallyPopulated = False

    System.Diagnostics.Debug.Unindent()

End Sub 'IDocumentModel.PopulateNode
        void IDocumentModel.PopulateNode(
            Microsoft.Ink.ContextNode analyzerNode,
            Microsoft.Ink.InkAnalyzer theInkAnalyzer)
        {
            System.Diagnostics.Debug.WriteLine(string.Format(
                "IDocumentModel.PopulateNode: populate {0} {1}.",
                TreeViewDocumentModel.GetContextNodeTypeName(analyzerNode.Type),
                analyzerNode.Id));
            System.Diagnostics.Debug.Indent();

            // Get the document node associated with the analyzer node.
            TreeNode documentNode = this[analyzerNode.Id];
            if (null == documentNode)
            {
                throw new ApplicationException(
                    "The requested node does not exist in the document model.");
            }

            // Get the data associated with the node.
            DocumentNodeData nodeData = documentNode.Tag as DocumentNodeData;

            // Copy any application specific data associated with the node to the
            // partially populated ContextNode.
            foreach (Guid identifier in nodeData.GetPropertyDataIds())
            {
                analyzerNode.AddPropertyData(
                    identifier, nodeData.GetPropertyData(identifier));
            }

            // Check if the partially populated ContextNode is an ink leaf node.
            if (nodeData.IsInkLeafNode)
            {
                // Add the strokes to the context node.
                analyzerNode.SetStrokes(nodeData.Strokes);
            }
            else
            {
                // Add each child subnode as a partially populated ContextNode.
                foreach (TreeNode documentSubNode in documentNode.Nodes)
                {
                    // Get the DocumentNode data for the 
                    DocumentNodeData subNodeData = documentSubNode.Tag as DocumentNodeData;

                    if (analyzerNode.SubNodes.IndexOf(nodeData.Id) != -1)
                    {
                        analyzerNode.CreatePartiallyPopulatedSubNode(
                            subNodeData.Type, subNodeData.Id, subNodeData.Location);
                    }
                }
            }

            // Add links to the ContextNode.
            this.AddLinksToAnalyzer(documentNode, analyzerNode, theInkAnalyzer);

            // Update the partially populated flag.
            analyzerNode.PartiallyPopulated = false;

            System.Diagnostics.Debug.Unindent();
        }

Plattformen

Windows Vista

.NET Framework und .NET Compact Framework unterstützen nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Versionsinformationen

.NET Framework

Unterstützt in: 3.0

Siehe auch

Referenz

ContextNode-Klasse

ContextNode-Member

Microsoft.Ink-Namespace