RecognitionAlternate.ConfidenceAlternates Property
RecognitionAlternate.ConfidenceAlternates Property |
Gets the collection of alternates where the current alternate is split into a collection of smaller alternates.
Definition
Visual Basic .NET Public ReadOnly Property ConfidenceAlternates As RecognitionAlternates C# public RecognitionAlternates ConfidenceAlternates { get; } Managed C++ public: __property RecognitionAlternates* get_ConfidenceAlternates();
Property Value
Microsoft.Ink.RecognitionAlternates. The collection of alternates where the current alternate is split along confidence level boundaries into a collection of alternates.
This property is read-only. This property has no default value.
Exceptions
Remarks
The collection in the ConfidenceAlternates property is created when an alternate is split into smaller alternates based on boundaries that exist due to confidence level breaks. Each alternate in the collection consists of adjacent segments with the same confidence level.
This property is an alternative to calling the AlternatesWithConstantPropertyValues method with its g parameter set to the globally unique identifier (GUID), ConfidenceLevel. For more information about properties of alternates, see the RecognitionProperty object.
Note: This property throws an exception if the Recognizer that generated the RecognitionAlternate does not support confidence levels.
Of the Microsoft® recognizers, only the Microsoft English (US) Handwriting Recognizer and the Microsoft Gesture Recognizer support confidence levels. Third party recognizers may or may not support confidence levels.
Examples
[C#]
This C# example defines event handlers for a form, ConfidenceAlternatesForm, to which a Button control, theButton, has been added. The sample also defines an InkCollector, theInkCollector, a RecognizerContext, theRecognizerContext, and a RecognitionResult, theRecognitionResult, which are used to collect ink and to perform recognition.
The event handler for the form's load event creates an ink collector and gets a recognizer context for the English (US) language.
The event handler for the button's click event performs recognition on the strokes in the ink collector, divides the strokes along confidence boundaries, and colors the strokes according to their confidence level.
// Declare ink elements and create drawing attributes. Microsoft.Ink.InkCollector theInkCollector = null; Microsoft.Ink.RecognizerContext theRecognizerContext = null; Microsoft.Ink.RecognitionResult theRecognitionResult = null; Microsoft.Ink.DrawingAttributes theStrongDA = new DrawingAttributes(Color.Green); Microsoft.Ink.DrawingAttributes theIntermediateDA = new DrawingAttributes(Color.Goldenrod); Microsoft.Ink.DrawingAttributes thePoorDA = new DrawingAttributes(Color.Red); // Event handler for the form's Load event. private void ConfidenceAlternatesForm_Load(object sender, System.EventArgs e) { // Create the ink collector. this.theInkCollector = new Microsoft.Ink.InkCollector(this.Handle); this.theInkCollector.Enabled = true; // Get a recognizer context for the English (US) recognizer. foreach (Recognizer theRecognizer in new Recognizers()) { foreach (short lcid in theRecognizer.Languages) { // 0409 is the LCID for the en-us language. if (0x0409 == lcid) { this.theRecognizerContext = theRecognizer.CreateRecognizerContext(); break; } } if (null != theRecognizerContext) { break; } } // Throw an exception if the recognizer is not found. if (null == theRecognizerContext) { throw new ApplicationException("No recognizer found"); } } // Event handler for the button's Click event. private void theButton_Click(object sender, System.EventArgs e) { // Check for ink before performing recognition. if (0 == this.theInkCollector.Ink.Strokes.Count) { System.Windows.Forms.MessageBox.Show("No ink to recognize."); return; } // Perform recognition on the strokes currently in the ink collector. Microsoft.Ink.RecognitionStatus theRecognitionStatus; this.theRecognizerContext.Strokes = this.theInkCollector.Ink.Strokes; this.theRecognitionResult = this.theRecognizerContext.Recognize(out theRecognitionStatus); // Check the recognition status. if (Microsoft.Ink.RecognitionStatus.NoError != theRecognitionStatus) { System.Windows.Forms.MessageBox.Show( "There was an error recognizing the ink."); return; } // Check for a recognition result. if (null == this.theRecognitionResult) { System.Windows.Forms.MessageBox.Show( "No recognition result available."); return; } // Get the confidence alternates collection for the top alternate. Microsoft.Ink.RecognitionAlternates theConfidenceAlternates = this.theRecognitionResult.TopAlternate.ConfidenceAlternates; using (System.Drawing.Graphics g = this.CreateGraphics()) { // Clear the drawing surface g.Clear(this.BackColor); // For each confidence alternate in the collection: foreach(Microsoft.Ink.RecognitionAlternate theAlternate in theConfidenceAlternates) { // Update the drawing attributes. switch (theAlternate.Confidence) { case Microsoft.Ink.RecognitionConfidence.Strong: theAlternate.Strokes.ModifyDrawingAttributes( theStrongDA); break; case Microsoft.Ink.RecognitionConfidence.Intermediate: theAlternate.Strokes.ModifyDrawingAttributes( theIntermediateDA); break; case Microsoft.Ink.RecognitionConfidence.Poor: theAlternate.Strokes.ModifyDrawingAttributes( thePoorDA); break; } } // Redraw the ink. this.theInkCollector.Renderer.Draw(g, this.theRecognitionResult.Strokes); } } // Event handler for the form's Closed event. private void ConfidenceAlternatesForm_Closed(object sender, System.EventArgs e) { // Free the resources for the ink collector, recognizer context, and pens. this.theInkCollector.Dispose(); this.theInkCollector = null; this.theRecognizerContext.Dispose(); this.theRecognizerContext = null; }
[Visual Basic .NET]
This Microsoft Visual Basic® .NET example defines event handlers for a form, ConfidenceAlternatesForm, to which a Button control, theButton, has been added. The sample also defines an InkCollector, theInkCollector, a RecognizerContext, theRecognizerContext, and a RecognitionResult, theRecognitionResult, which are used to collect ink and to perform recognition.
The event handler for the form's load event creates an ink collector and gets a recognizer context for the English (US) language.
The event handler for the button's click event performs recognition on the strokes in the ink collector, divides the strokes along confidence boundaries, and colors the strokes according to their confidence level.
' Declare ink elements and create drawing attributes. Dim theInkCollector As Microsoft.Ink.InkCollector Dim theRecognizerContext As Microsoft.Ink.RecognizerContext Dim theRecognitionResult As Microsoft.Ink.RecognitionResult Dim theStrongDA As Microsoft.Ink.DrawingAttributes = New DrawingAttributes(Color.Green) Dim theIntermediateDA As Microsoft.Ink.DrawingAttributes = New DrawingAttributes(Color.Goldenrod) Dim thePoorDA As Microsoft.Ink.DrawingAttributes = New DrawingAttributes(Color.Red) ' Event handler for the form's Load event. Private Sub ConfidenceAlternatesForm_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load ' Create the ink collector. Me.theInkCollector = New Microsoft.Ink.InkCollector(Me.Handle) Me.theInkCollector.Enabled = True ' Get a recognizer context for the English (US) recognizer. For Each theRecognizer As Recognizer In New Recognizers For Each lcid As Short In theRecognizer.Languages ' 0409 is the LCID for the en-us language. If &H409 = lcid Then Me.theRecognizerContext = theRecognizer.CreateRecognizerContext() Exit For End If Next If Not (theRecognizerContext Is Nothing) Then Exit For End If Next ' Throw an exception if the recognizer is not found. If theRecognizerContext Is Nothing Then Throw New ApplicationException("No recognizer found") End If End Sub ' Event handler for the "Recognize" button's Click event. Private Sub theButton_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles theButton.Click ' Check for ink before performing recognition. If Me.theInkCollector.Ink.Strokes.Count = 0 Then System.Windows.Forms.MessageBox.Show("No ink to recognize.") Return End If ' Perform recognition on the strokes currently in the ink collector. Dim theRecognitionStatus As Microsoft.Ink.RecognitionStatus Me.theRecognizerContext.Strokes = Me.theInkCollector.Ink.Strokes Me.theRecognitionResult = _ Me.theRecognizerContext.Recognize(theRecognitionStatus) ' Check for a recognition result. If (Me.theRecognitionResult Is Nothing) Then System.Windows.Forms.MessageBox.Show("No recognition result available.") Return End If ' Get the confidence alternates collection for the top alternate. Dim theConfidenceAlternates As Microsoft.Ink.RecognitionAlternates = _ Me.theRecognitionResult.TopAlternate.ConfidenceAlternates ' Create a temporary graphics object. Dim g As System.Drawing.Graphics = Me.CreateGraphics() ' Clear the drawing surface g.Clear(Me.BackColor) ' For each confidence alternate in the collection: For Each theAlternate As Microsoft.Ink.RecognitionAlternate _ In theConfidenceAlternates ' Update the drawing attributes. Select Case theAlternate.Confidence Case RecognitionConfidence.Strong theAlternate.Strokes.ModifyDrawingAttributes(theStrongDA) Case RecognitionConfidence.Intermediate theAlternate.Strokes.ModifyDrawingAttributes(theIntermediateDA) Case RecognitionConfidence.Poor theAlternate.Strokes.ModifyDrawingAttributes(thePoorDA) End Select Next ' Redraw the ink. Me.theInkCollector.Renderer.Draw(g, Me.theRecognitionResult.Strokes) ' Dispose of the graphics object. g.Dispose() End Sub ' Event handler for the form's Closed event. Private Sub ConfidenceAlternatesForm_Closed(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Closed ' Free the resources for the ink collector and recognizer context. Me.theInkCollector.Dispose() Me.theInkCollector = Nothing Me.theRecognizerContext.Dispose() Me.theRecognizerContext = Nothing End Sub
See Also