Compartir a través de


RecognizerContext.BackgroundRecognize Method ()

Causes the Recognizer object to recognize the associated Strokes collection and raise a Recognition event when recognition is complete.

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

Syntax

'Declaration
Public Sub BackgroundRecognize
'Usage
Dim instance As RecognizerContext

instance.BackgroundRecognize
public void BackgroundRecognize ()
public:
void BackgroundRecognize ()
public void BackgroundRecognize ()
public function BackgroundRecognize ()
Not applicable.

Remarks

This method specifies that ink recognition is performed asynchronously. To recognize ink synchronously, call the RecognizerContext.Recognize method.

This method recognizes only the best result string. This method does not create RecognitionAlternate objects. To perform recognition that creates a list of available alternates, call the BackgroundRecognizeWithAlternates method.

The Recognition event is not raised if the recognizer does not recognize anything.

Example

This C# example tracks each stroke that is made and calls the BackgroundRecognize method, which subsequently causes a Recognition event to occur. The results of the recognition appear in the text box, theTextBox.

using System;
using System.Drawing;
using System.Windows.Forms;
using Microsoft.Ink;

class RecognitionEventForm : System.Windows.Forms.Form
{
    private TextBox theTextBox;
    InkCollector theInkCollector;
    Strokes theStrokes;
    RecognizerContext theRecognizerContext;

    public RecognitionEventForm()
    {
        // Initialize the form and the text box.
        // Call SuspendLayout while we adjust things.
        this.theTextBox = new System.Windows.Forms.TextBox();
        this.SuspendLayout();
        this.theTextBox.Dock = System.Windows.Forms.DockStyle.Bottom;
        this.theTextBox.Location = new System.Drawing.Point(0, 300);
        this.theTextBox.Size = new System.Drawing.Size(350, 20);
        this.theTextBox.Text = "";
        this.ClientSize = new System.Drawing.Size(350, 320);
        this.Controls.AddRange(new System.Windows.Forms.Control[] {this.theTextBox});
        this.Text = "Recognition Event Demo";
        this.ResumeLayout(false);

        // Create new ink collector and recognizer context
        theInkCollector = new InkCollector(Handle);
        theRecognizerContext = new RecognizerContext();

        // Initialize the recognizer's strokes
        // and assign them to the recognizer context.
        theStrokes = theInkCollector.Ink.Strokes;
        theRecognizerContext.Strokes = theStrokes;

        // Install event handlers.
        theInkCollector.Stroke +=
            new InkCollectorStrokeEventHandler(Stroke_Event);
        theRecognizerContext.Recognition +=
            new RecognizerContextRecognitionEventHandler(Recognition_Event);

        // Enable the ink collector
        theInkCollector.Enabled = true;
    }

    public static void Main()
    {
        Application.Run(new RecognitionEventForm());
    }

    // Stroke event handler
    private void Stroke_Event(object sender,
        InkCollectorStrokeEventArgs e)
    {
        // When a new stroke is collected,
        // add it to the recognizer's strokes collection.
        theStrokes.Add(e.Stroke);
        // Tell the context to recognize its strokes.
        theRecognizerContext.BackgroundRecognize();
    }

    // Recognition Event Handler
    private void Recognition_Event(object sender,
        RecognizerContextRecognitionEventArgs e)
    {
        // Update the text box with the top string of the result
        theTextBox.Text = e.Text;
    }

    // Event handler for the form's closed event
    private void RecognitionEventForm_Closed(object sender, System.EventArgs e)
    {
        theInkCollector.Dispose();
        theInkCollector = null;
        theRecognizerContext.Dispose();
        theRecognizerContext = null;
    }
}

This Microsoft® Visual Basic® .NET example tracks each stroke that is made and calls the BackgroundRecognize method, which subsequently causes a Recognition event to occur. The results of the recognition appear in the text box, theTextBox.

Public Class Form1
    Inherits System.Windows.Forms.Form

    'Code to create Form1 and theTextBox goes here in the Windows Form Designer region.

    Dim theInkCollector As InkCollector
    Dim theStrokes As Strokes
    Dim theRecognizerContext As RecognizerContext
    Dim theRecognitionResult As RecognitionResult

    Private Sub Stroke_Event(ByVal sender As Object, _
    ByVal e As InkCollectorStrokeEventArgs)
        'When a new stroke is collected, add it to
        'the RecognizerContext's strokes collection
        theStrokes.Add(e.Stroke)
        'Tell the RecognizerContext to recognize
        theRecognizerContext.BackgroundRecognize()
    End Sub

    Private Sub Recognize_Event( _
    ByVal sender As Object, _
    ByVal e As RecognizerContextRecognitionEventArgs)
        'Update the text box with the top result
        theTextBox.Text = e.Text
    End Sub

    Private Sub Form1_Load(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.Load
        theInkCollector = New InkCollector(Handle)
        'Create new RecognizerContext
        theRecognizerContext = New RecognizerContext()
        'Initialize the recognizer's strokes
        'and assign them to the RecognizerContext
        theStrokes = theInkCollector.Ink.Strokes
        theRecognizerContext.Strokes = theStrokes
        'Add the handler for the Stroke event
        AddHandler theInkCollector.Stroke, AddressOf Stroke_Event
        'Handle Recognition event
        AddHandler theRecognizerContext.Recognition, _
        AddressOf Recognize_Event
        'Enable the ink collector
        theInkCollector.Enabled = True
    End Sub

    ' Event handler for the form's closed event
    Private Sub Form1_Closed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closed
        theInkCollector.Dispose()
        theInkCollector = Nothing
        theRecognizerContext.Dispose()
        theRecognizerContext = Nothing
    End Sub
End Class

Platforms

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

RecognizerContext Class
RecognizerContext Members
Microsoft.Ink Namespace
Microsoft.Ink.RecognizerContext.BackgroundRecognizeWithAlternates
ExtendedProperty.Data
RecognitionAlternate