Freigeben über


RecognizerContextRecognitionWithAlternatesEventHandler-Delegat

Stellt die Methode dar, die das RecognitionWithAlternates-Ereignis eines RecognizerContext-Objekts behandelt.

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

Syntax

'Declaration
Public Delegate Sub RecognizerContextRecognitionWithAlternatesEventHandler ( _
    sender As Object, _
    e As RecognizerContextRecognitionWithAlternatesEventArgs _
)
'Usage
Dim instance As New RecognizerContextRecognitionWithAlternatesEventHandler(AddressOf HandlerMethod)
public delegate void RecognizerContextRecognitionWithAlternatesEventHandler(
    Object sender,
    RecognizerContextRecognitionWithAlternatesEventArgs e
)
public delegate void RecognizerContextRecognitionWithAlternatesEventHandler(
    Object^ sender, 
    RecognizerContextRecognitionWithAlternatesEventArgs^ e
)
/** @delegate */
public delegate void RecognizerContextRecognitionWithAlternatesEventHandler(
    Object sender,
    RecognizerContextRecognitionWithAlternatesEventArgs e
)
JScript unterstützt keine Delegaten.

Parameter

Hinweise

Das RecognitionWithAlternates-Ereignis tritt ein, wenn der RecognizerContext nach Aufruf der BackgroundRecognizeWithAlternates-Methode Ergebnisse generiert.

Beim Erstellen eines RecognizerContextRecognitionWithAlternatesEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird.

Hinweis

Das Verhalten ist nicht vorhersehbar, wenn Sie versuchen, vom RecognizerContextRecognitionEventHandler-Delegaten Zugriff auf das ursprüngliche RecognizerContext-Objekt zu erhalten. Versuchen Sie nicht, diesen Vorgang auszuführen.

Beispiele

In diesem Beispiel wird jeder in einem InkOverlay-Objekt ausgeführte Strich automatisch erkannt, und die Erkennungsergebnisse (mit Alternativen) werden angezeigt.

Während des Starts der Anwendung wird das RecognizerContext-Objekt instanziiert, und Ereignishandlers werden zugewiesen.

' create a new RecognizerContext object
' the object's Strokes property is initialized to null
mRecognizerContext = New RecognizerContext()
' assign the Strokes property by creating a fresh Strokes collection 
mRecognizerContext.Strokes = mInkOverlay.Ink.CreateStrokes()
' subscribe to the Strokes event. It is during this event
' that we can add strokes to the RecognizerContext
AddHandler mInkOverlay.Stroke, New InkCollectorStrokeEventHandler(AddressOf mInkOverlay_Stroke1)
' subscribe to the the RecognitionWithAlternates event. 
' This event is fired when background recognition is complete, 
' and recognition results (with alternates) are available
AddHandler mRecognizerContext.RecognitionWithAlternates, _
     New RecognizerContextRecognitionWithAlternatesEventHandler(AddressOf mRecognizerContext_RecognitionWithAlternates)
// create a new RecognizerContext object
// the object's Strokes property is initialized to null
mRecognizerContext = new RecognizerContext();
// assign the Strokes property by creating a fresh Strokes collection 
mRecognizerContext.Strokes = mInkOverlay.Ink.CreateStrokes();
// subscribe to the Strokes event. It is during this event
// that we can add strokes to the RecognizerContext
mInkOverlay.Stroke += new InkCollectorStrokeEventHandler(mInkOverlay_Stroke1);
// subscribe to the the RecognitionWithAlternates event. 
// This event is fired when background recognition is complete, 
// and recognition results (with alternates) are available
mRecognizerContext.RecognitionWithAlternates += 
    new RecognizerContextRecognitionWithAlternatesEventHandler(mRecognizerContext_RecognitionWithAlternates);

Beim Auslösen des Stroke-Ereignisses (als Reaktion auf das Abschließen eines Strichs durch den Benutzer) wird der Strokes-Auflistung des RecognizerContext-Objekts der neu erstellte Strich hinzugefügt, und die BackgroundRecognizeWithAlternates-Methode wird aufgerufen.

Private Sub mInkOverlay_Stroke1(ByVal sender As Object, ByVal e As InkCollectorStrokeEventArgs)
    ' in case background recognition is still occurring, stop it
    mRecognizerContext.StopBackgroundRecognition()
    ' add the stroke, and start recognition
    mRecognizerContext.Strokes.Add(e.Stroke)
    mRecognizerContext.BackgroundRecognizeWithAlternates()
End Sub
private void mInkOverlay_Stroke1(object sender, InkCollectorStrokeEventArgs e)
{
    // in case background recognition is still occurring, stop it
    mRecognizerContext.StopBackgroundRecognition();
    // add the stroke, and start recognition
    mRecognizerContext.Strokes.Add(e.Stroke);
    mRecognizerContext.BackgroundRecognizeWithAlternates();
}

Wenn die Hintergrunderkennung abgeschlossen wurde, wird das RecognitionWithAlternates-Ereignis ausgelöst. Während des Behandelns dieses Ereignisses werden die Ergebnisse der Erkennung (einschließlich der Alternativen) in einem Listenfeld platziert.

' event fires when recognition results (with alternates) are ready
Private Sub mRecognizerContext_RecognitionWithAlternates(ByVal sender As Object, _
            ByVal e As RecognizerContextRecognitionWithAlternatesEventArgs)
    ' when updating a control, must use Invoke() since controls are
    ' not thread safe and recognition occurs on a different thread
    If Me.InvokeRequired Then
        ' recursively call this method via Invoke()
        Me.Invoke( _
            New RecognizerContextRecognitionWithAlternatesEventHandler(AddressOf mRecognizerContext_RecognitionWithAlternates), _
            New Object() {sender, e} _
        )
        Return
    End If
    If RecognitionStatus.NoError = e.RecognitionStatus Then
        ' show the top alternate
        listBoxRecognitionResults.Items.Add("TOP:" + e.Result.TopAlternate.ToString())
        ' get the rest of the alternates
        Dim allAlternates As RecognitionAlternates = e.Result.GetAlternatesFromSelection()
        ' show each of the other alternates
        For Each oneAlternate As RecognitionAlternate In allAlternates
            listBoxRecognitionResults.Items.Add("ALT:" + oneAlternate.ToString())
        Next
    End If
End Sub
// event fires when recognition results (with alternates) are ready
private void mRecognizerContext_RecognitionWithAlternates(object sender, RecognizerContextRecognitionWithAlternatesEventArgs e)
{
    // when updating a control, must use Invoke() since controls are
    // not thread safe and recognition occurs on a different thread
    if (this.InvokeRequired)
    {
        // recursively call this method via Invoke()
        this.Invoke(
            new RecognizerContextRecognitionWithAlternatesEventHandler(mRecognizerContext_RecognitionWithAlternates),
            new object[] { sender, e }
            );
        return;
    }
    if (RecognitionStatus.NoError == e.RecognitionStatus)
    {
        // show the top alternate
        listBoxRecognitionResults.Items.Add("TOP:" + e.Result.TopAlternate.ToString());
        // get the rest of the alternates
        RecognitionAlternates allAlternates = e.Result.GetAlternatesFromSelection();
        // show each of the other alternates
        foreach (RecognitionAlternate oneAlternate in allAlternates)
        {
            listBoxRecognitionResults.Items.Add("ALT:" + oneAlternate.ToString());
        }
    }
}

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

Microsoft.Ink-Namespace

RecognizerContext.BackgroundRecognizeWithAlternates

RecognitionResult

RecognizerContext.Recognize