Partager via


ObjectNode, classe

Mise à jour : November 2007

Représente un ContextNode pour un nœud retourné à partir d'un module de reconnaissance personnalisée d'objets.

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

Syntaxe

'Déclaration
Public NotInheritable Class ObjectNode _
    Inherits ContextNode
'Utilisation
Dim instance As ObjectNode
public sealed class ObjectNode : ContextNode
public ref class ObjectNode sealed : public ContextNode
public final class ObjectNode extends ContextNode
public final class ObjectNode extends ContextNode

Notes

Pour plus d'informations sur le fonctionnement des modules de reconnaissance d'objets, consultez Object Recognizers.

Un ObjectNode ne peut pas contenir d'éléments enfants.

Les objets ObjectNode sont contenus uniquement par un objet CustomRecognizerNode.

Exemples

L'exemple suivant parcourt en boucle les nœuds enfants d'un objet CustomRecognizerNode, musicRecognizer.. Il recherche ensuite chaque ObjectNode et récupère les propriétés pertinentes. L'application traite chaque ObjectNode comme une note de musique. Le module de reconnaissance personnalisée ajoute cinq propriétés (letter, octave, measure, withinMeasure et duration) permettant de décrire la note. La méthode GetPropertyData récupère les données avec les membres Guid suivants : noteLetterId, noteOctaveId, noteMeasureId, noteWithinMeasureId et noteDurationId. Une fois toutes les données collectées, la méthode DrawNote trace la note.

Dim subNode As ContextNode
For Each subNode In  musicRecognizer.SubNodes
    If TypeOf subNode Is ObjectNode Then
        ' Assume all object nodes represent notes
        Dim noteObject As ObjectNode = CType(subNode, ObjectNode)
        Dim letter As String
        If noteObject.ContainsPropertyData(Me.noteLetterId) Then
            letter = CStr(noteObject.GetPropertyData(Me.noteLetterId))
        Else
            letter = ""
        End If 
        Dim octave As Integer
        If noteObject.ContainsPropertyData(Me.noteOctaveId) Then
            octave = Fix(noteObject.GetPropertyData(Me.noteOctaveId))
        Else
            octave = - 1
        End If 
        Dim measure As Integer
        If noteObject.ContainsPropertyData(Me.noteMeasureId) Then
            measure = Fix(noteObject.GetPropertyData(Me.noteMeasureId))
        Else
            measure = - 1
        End If 
        Dim withinMeasure As Integer
        If noteObject.ContainsPropertyData(Me.noteWithinMeasureId) Then
            withinMeasure = Fix(noteObject.GetPropertyData(Me.noteWithinMeasureId))
        Else
            withinMeasure = - 1
        End If 
        Dim duration As Integer
        If noteObject.ContainsPropertyData(Me.noteOctaveId) Then
            duration = Fix(noteObject.GetPropertyData(Me.noteDurationId))
        Else
            duration = - 1
        End If 
        ' Draw note if all data is valid
        If letter.Length > 0 AndAlso octave >= 0 AndAlso _
            measure >= 0 AndAlso withinMeasure >= 0 AndAlso duration >= 0 Then
            DrawNote(letter, octave, measure, withinMeasure, duration)
        End If
    End If
Next subNode
foreach (ContextNode subNode in musicRecognizer.SubNodes)
{
    if (subNode is ObjectNode)
    {
        // Assume all object nodes represent notes
        ObjectNode noteObject = (ObjectNode)subNode;
        string letter;
        if (noteObject.ContainsPropertyData(this.noteLetterId))
            letter = (string)noteObject.GetPropertyData(this.noteLetterId);
        else
            letter = "";

        int octave;
        if (noteObject.ContainsPropertyData(this.noteOctaveId))
            octave = (int)noteObject.GetPropertyData(this.noteOctaveId);
        else
            octave = -1;

        int measure;
        if (noteObject.ContainsPropertyData(this.noteMeasureId))
            measure = (int)noteObject.GetPropertyData(this.noteMeasureId);
        else
            measure = -1;

        int withinMeasure;
        if (noteObject.ContainsPropertyData(this.noteWithinMeasureId))
            withinMeasure = (int)noteObject.GetPropertyData(this.noteWithinMeasureId);
        else
            withinMeasure = -1;

        int duration;
        if (noteObject.ContainsPropertyData(this.noteOctaveId))
            duration = (int)noteObject.GetPropertyData(this.noteDurationId);
        else
            duration = -1;

        // Draw note if all data is valid
        if (letter.Length > 0 && octave >= 0 && measure >= 0 &&
            withinMeasure >= 0 && duration >= 0)
        {
            DrawNote(letter, octave, measure, withinMeasure, duration);
        }
    }
}

Hiérarchie d'héritage

System.Object
  System.Windows.Ink.ContextNode
    System.Windows.Ink.ObjectNode

Sécurité des threads

Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

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

Membres ObjectNode

System.Windows.Ink, espace de noms

System.Windows.Ink.CustomRecognizerNode

Autres ressources

Object Recognizers