Partager via


ContextNode.SetStrokes, méthode

Mise à jour : November 2007

Définit les traits spécifiés sur un objet ContextNode.

Espace de noms :  System.Windows.Ink
Assembly :  IAWinFX (dans IAWinFX.dll)

Syntaxe

'Déclaration
Public Sub SetStrokes ( _
    strokes As StrokeCollection _
)
'Utilisation
Dim instance As ContextNode
Dim strokes As StrokeCollection

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

Paramètres

Notes

Cette méthode ne met pas à jour la propriété DirtyRegion.

Si l'un des traits spécifiés dans la collection de traits est déjà défini sur le InkAnalyzer, une exception ArgumentException est levée.

Exemples

L'exemple suivant est une méthode nommée PopulateNode qui utilise un TreeView comme modèle de document pour montrer comment le proxy de données peut être utilisé pour stocker et charger une arborescence de nœuds de contexte pour un InkAnalyzer. La classe DocumentNodeData stocke les données ContextNode dans le modèle de document lorsque la propriété Tag de chaque objet TreeViewItem a pour valeur un objet DocumentNodeData.

La méthode PopulateNode remplit complètement un objet ContextNode en ajoutant des traits, des données de propriété, un type d'annotation, des nœuds enfants et des liens à partir d'un objet InkAnalyzer. Elle utilise la méthode SetStrokes pour ajouter les traits. Les données proviennent de l'objet DocumentNodeData obtenu du TreeViewItem correspondant.

  • this[analyzerNode.Id] est un indexeur pour la classe de modèle de document qui mappe un Guid à un TreeViewItem. (Me(analyzerNode.Id) dans VB.NET)

  • AddLinksToAnalyer est une méthode de la classe de modèle de document qui ajoute des liens au ContextNode.

Lorsque le nœud est complètement rempli, la propriété PartiallyPopulated a la valeur false. Pour plus d'informations sur le proxy de données, consultez Data Proxy with Ink Analysis.

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

    System.Diagnostics.Debug.WriteLine(String.Format("IDocumentModel.PopulateNode: populate {0} {1}.", analyzerNode.ToString(), GetRecognizedString(analyzerNode)))
    System.Diagnostics.Debug.Indent()

    ' Get the document node associated with the analyzer node.
    Dim documentNode As TreeViewItem = 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.
    For Each identifier As Guid 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 TreeViewItem
        For Each documentSubNode In  documentNode.Items
            ' 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(
            ContextNode analyzerNode,
            InkAnalyzer theInkAnalyzer)
        {
            System.Diagnostics.Debug.WriteLine(string.Format(
                "IDocumentModel.PopulateNode: populate {0} {1}.",
                analyzerNode.ToString(), GetRecognizedString(analyzerNode)));
            System.Diagnostics.Debug.Indent();

            // Get the document node associated with the analyzer node.
            TreeViewItem 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 (TreeViewItem documentSubNode in documentNode.Items)
                {
                    // 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();
        }

Plateformes

Windows Vista

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

Informations de version

.NET Framework

Pris en charge dans : 3.0

Voir aussi

Référence

ContextNode, classe

Membres ContextNode

System.Windows.Ink, espace de noms