Condividi tramite


Classe ObjectNode

Aggiornamento: novembre 2007

Rappresenta un oggetto ContextNode per un nodo restituito da un sistema di riconoscimento personalizzato di un oggetto.

Spazio dei nomi:  System.Windows.Ink
Assembly:  IAWinFX (in IAWinFX.dll)

Sintassi

'Dichiarazione
Public NotInheritable Class ObjectNode _
    Inherits ContextNode
'Utilizzo
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

Note

Per ulteriori informazioni sulle modalità di funzionamento dei sistemi di riconoscimento degli oggetti, vedere Object Recognizers.

Un oggetto ObjectNode non può contenere elementi figlio.

Gli oggetti ObjectNode vengono contenuti solo da un oggetto CustomRecognizerNode.

Esempi

Nell'esempio seguente vengono riprodotti in ciclo continuo tutti i nodi figlio di un oggetto CustomRecognizerNode, musicRecognizer. Quindi, viene trovato ogni oggetto ObjectNode e vengono recuperate le proprietà pertinenti. L'applicazione tratta ogni oggetto ObjectNode come una nota musicale. Il sistema di riconoscimento personalizzato aggiunge cinque proprietà (letter, octave, measure, withinMeasure e duration) per descrivere la nota. Il metodo GetPropertyData recupera i dati con i seguenti membri Guid: noteLetterId, noteOctaveId, noteMeasureId, noteWithinMeasureId e noteDurationId. Una volta raccolti tutti i dati, il metodo DrawNote disegna la nota.

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

Gerarchia di ereditarietà

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

Codice thread safe

Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Piattaforme

Windows Vista

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Informazioni sulla versione

.NET Framework

Supportato in: 3.0

Vedere anche

Riferimenti

Membri ObjectNode

Spazio dei nomi System.Windows.Ink

System.Windows.Ink.CustomRecognizerNode

Altre risorse

Object Recognizers