Condividi tramite


Proprietà RecognitionAlternate.Baseline

Aggiornamento: novembre 2007

Ottiene la linea di base per un oggetto RecognitionAlternate che rappresenta una riga di testo singola.

Spazio dei nomi:  Microsoft.Ink
Assembly:  Microsoft.Ink (in Microsoft.Ink.dll)

Sintassi

'Dichiarazione
Public ReadOnly Property Baseline As Line
'Utilizzo
Dim instance As RecognitionAlternate
Dim value As Line

value = instance.Baseline
public Line Baseline { get; }
public:
property Line Baseline {
    Line get ();
}
/** @property */
public Line get_Baseline()
public function get Baseline () : Line

Valore proprietà

Tipo: Microsoft.Ink.Line
Linea di base per un oggetto RecognitionAlternate che rappresenta una riga di testo singola.

Note

La linea di base è la linea orizzontale immaginaria alla quale è allineata la base di ogni carattere, escluso il discendente. Corrisponde inoltre alla parte inferiore dell'altezza X.

Nota

Se l'alternativa di riconoscimento si estende su più segmenti di riconoscimento all'interno di una riga di testo, questa proprietà restituirà una riga che inizia in corrispondenza dell'oggetto BeginPoint della linea di base del primo segmento nell'alternativa e termina in corrispondenza dell'oggetto EndPoint della linea di base dell'ultimo segmento nell'alternativa.

È possibile utilizzare il metodo AlternatesWithConstantPropertyValues con il parametro g impostato sul GUID RecognitionProperty.Segmentation per ottenere un insieme di alternative di riconoscimento a un segmento corrispondenti a una segmentazione dell'alternativa originale.

Nota

Se l'alternativa di riconoscimento si estende su più righe, questa proprietà genera un'eccezione COMException. È possibile utilizzare la proprietà LineAlternates per ottenere un insieme di alternative di riconoscimento a una riga corrispondenti a un'alternativa di riconoscimento a più righe.

Esempi

In questo esempio di C# vengono definiti i gestori eventi per un form, RecognitionResultForm, a cui sono stati aggiunti un controllo ListBox, theListBox, e due controlli Button, theRecognizeButton e theGetDataButton. Nell'esempio vengono inoltre definiti un oggetto InkCollector, theInkCollector, un oggetto RecognizerContext, theRecognizerContext e un oggetto RecognitionResult, theRecognitionResult, utilizzati per raccogliere l'input penna ed eseguire il riconoscimento.

Il gestore eventi per l'evento Click di theRecognizeButton esegue il riconoscimento sui tratti nell'agente di raccolta dell'input penna e inserisce le informazioni relative alla prima alternativa del risultato del riconoscimento in theListBox.

Il gestore eventi per l'evento Click di theGetDataButton ottiene l'insieme di alternative di riga per la prima alternativa. Il gestore disegna quindi la linea ascendente, mediana, di base e discendente per ogni alternativa di riga. Il gestore inserisce inoltre informazioni sul numero di riga e sul livello di probabilità di ogni alternativa di riga in theListBox.

[C#]

// Declare ink elements and create pens.
Microsoft.Ink.InkCollector theInkCollector;
Microsoft.Ink.RecognizerContext theRecognizerContext;
Microsoft.Ink.RecognitionResult theRecognitionResult;

System.Drawing.Pen thePen1 = new Pen(Color.Red);
System.Drawing.Pen thePen2 = new Pen(Color.Orange);
System.Drawing.Pen thePen3 = new Pen(Color.Yellow);
System.Drawing.Pen thePen4 = new Pen(Color.Green);

// Event handler for the form's Load event.
private void RecognitionResultForm_Load(object sender, System.EventArgs e)
{
    // Create the ink collector.
    this.theInkCollector = new Microsoft.Ink.InkCollector(this.Handle);
    this.theInkCollector.Enabled = true;

    // Create the default recognizer context.
    this.theRecognizerContext = new Microsoft.Ink.RecognizerContext();
}

// Event handler for the "Recognize" button's Click event.
private void theRecognizeButton_Click(object sender, System.EventArgs e)
{
    // Check for ink before performing recognition.
    this.theListBox.Items.Clear();
    if (0 == this.theInkCollector.Ink.Strokes.Count)
    {
        this.theListBox.Items.Add("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);

    // Display information about the recognition result in the list box.
    this.theListBox.Items.Add("The top alternate is: " +
        this.theRecognitionResult.TopString);
    this.theListBox.Items.Add("The top confidence is: " +
        this.theRecognitionResult.TopConfidence);
    this.theListBox.Items.Add("The number of strokes is:" +
        this.theRecognitionResult.Strokes.Count);
}

// Event handler for the "Get Data" button's Click event.
private void theGetDataButton_Click(object sender, System.EventArgs e)
{
    // Refresh the list box and check for a recognition result.
    this.theListBox.Items.Clear();
    if (null == this.theRecognitionResult)
    {
        this.theListBox.Items.Add("No recognition result available.");
        return;
    }

    // Get the line alternates collection for the top alternate.
    Microsoft.Ink.RecognitionAlternates theLineAlternates =
        this.theRecognitionResult.TopAlternate.LineAlternates;

    using (System.Drawing.Graphics g = this.CreateGraphics())
    {
        // Clear the drawing surface
        g.Clear(this.BackColor);

        // For each line alternate in the collection:
        foreach(Microsoft.Ink.RecognitionAlternate theAlternate
                    in theLineAlternates)
        {
            // Add information about the alternate to the list box.
            this.theListBox.Items.Add("The Line Number is: " +
                theAlternate.LineNumber.ToString());
            this.theListBox.Items.Add("The alternate's text is: " +
                theAlternate.ToString());
            this.theListBox.Items.Add("The number of strokes is: " +
                theAlternate.Strokes.Count);
            this.theListBox.Items.Add("The Confidence is: " +
                theAlternate.Confidence.ToString());

            // Draw the ascender, midline, baseline, and descender.
            DrawLine(g, theAlternate.Ascender, this.thePen1);
            DrawLine(g, theAlternate.Midline, this.thePen2);
            DrawLine(g, theAlternate.Baseline, this.thePen3);
            DrawLine(g, theAlternate.Descender, this.thePen4);

            this.theListBox.Items.Add(string.Empty);
        }

        // Redraw the ink.
        this.theInkCollector.Renderer.Draw(g, this.theRecognitionResult.Strokes);
    }
}

// Event handler for the form's Closed event.
private void RecognitionResultForm_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;

    this.thePen1.Dispose();
    this.thePen1 = null;
    this.thePen2.Dispose();
    this.thePen2 = null;
    this.thePen3.Dispose();
    this.thePen3 = null;
    this.thePen4.Dispose();
    this.thePen4 = null;
}

// Helper function to draw the lines.
private void DrawLine(System.Drawing.Graphics g,
    Microsoft.Ink.Line line, System.Drawing.Pen pen)
{
    System.Drawing.Point point1 = line.BeginPoint;
    System.Drawing.Point point2 = line.EndPoint;

    this.theInkCollector.Renderer.InkSpaceToPixel(g, ref point1);
    this.theInkCollector.Renderer.InkSpaceToPixel(g, ref point2);

    g.DrawLine(pen, point1, point2);
}

In questo esempio di Microsoft® Visual Basic® .NET vengono definiti i gestori eventi per un form, RecognitionResultForm, a cui sono stati aggiunti un controllo ListBox, theListBox, e due controlli Button, theRecognizeButton e theGetDataButton. Nell'esempio vengono inoltre definiti un oggetto InkCollector, theInkCollector, un oggetto RecognizerContext, theRecognizerContext e un oggetto RecognitionResult, theRecognitionResult, utilizzati per raccogliere l'input penna ed eseguire il riconoscimento.

Il gestore eventi per l'evento Click di theRecognizeButton esegue il riconoscimento sui tratti nell'agente di raccolta dell'input penna e inserisce le informazioni relative alla prima alternativa del risultato del riconoscimento in theListBox.

Il gestore eventi per l'evento Click di theGetDataButton ottiene l'insieme di alternative di riga per la prima alternativa. Il gestore disegna quindi la linea ascendente, mediana, di base e discendente per ogni alternativa di riga. Il gestore inserisce inoltre informazioni sul numero di riga e sul livello di probabilità di ogni alternativa di riga in theListBox.

[Visual Basic]

    Dim theInkCollector As Microsoft.Ink.InkCollector
    Dim theRecognizerContext As Microsoft.Ink.RecognizerContext
    Dim theRecognitionResult As Microsoft.Ink.RecognitionResult

    Dim thePen1 As System.Drawing.Pen = New Pen(Color.Red)
    Dim thePen2 As System.Drawing.Pen = New Pen(Color.Orange)
    Dim thePen3 As System.Drawing.Pen = New Pen(Color.Yellow)
    Dim thePen4 As System.Drawing.Pen = New Pen(Color.Green)

    ' Event handler for the form's Load event.
    Private Sub RecognitionResultForm_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

        ' Create the default recognizer context.
        Me.theRecognizerContext = New Microsoft.Ink.RecognizerContext
    End Sub

    ' Event handler for the "Recognize" button's Click event.
    Private Sub theRecognizeButton_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles theRecognizeButton.Click

        ' Check for ink before performing recognition.
        Me.theListBox.Items.Clear()
        If Me.theInkCollector.Ink.Strokes.Count = 0 Then
            Me.theListBox.Items.Add("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)

        ' Display information about the recognition result in the list box.
        Me.theListBox.Items.Add("The top alternate is: " & _
                                    theRecognitionResult.TopString)
        Me.theListBox.Items.Add("The top confidence is: " & _
                                    theRecognitionResult.TopConfidence.ToString())
        Me.theListBox.Items.Add("The number of strokes is:" & _
                                    theRecognitionResult.Strokes.Count)
    End Sub

    ' Event handler for the "Get Data" button's Click event.
    Private Sub theGetDataButton_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles theGetDataButton.Click

        ' Refresh the list box and check for a recognition result.
        Me.theListBox.Items.Clear()
        If (Me.theRecognitionResult Is Nothing) Then
            Me.theListBox.Items.Add("No recognition result available.")
            Return
        End If

        ' Get the line alternates collection for the top alternate.
        Dim theLineAlternates As Microsoft.Ink.RecognitionAlternates = _
            Me.theRecognitionResult.TopAlternate.LineAlternates()

        ' Create a temporary graphics object.
        Dim g As System.Drawing.Graphics = Me.CreateGraphics()

        ' Clear the drawing surface
        g.Clear(Me.BackColor)

        ' For each line alternate in the collection:
        For Each theAlternate As Microsoft.Ink.RecognitionAlternate _
                    In theLineAlternates

            ' Add information about the alternate to the list box.
            Me.theListBox.Items.Add("The Line Number is: " & _
                theAlternate.LineNumber.ToString())
            Me.theListBox.Items.Add("The alternate's text is: " & _
                theAlternate.ToString())
            Me.theListBox.Items.Add("The number of strokes is: " & _
                theAlternate.Strokes.Count)
            Me.theListBox.Items.Add("The Confidence is: " & _
                theAlternate.Confidence.ToString())

            ' Draw the ascender, midline, baseline, and descender.
            DrawLine(g, theAlternate.Ascender, Me.thePen1)
            DrawLine(g, theAlternate.Midline, Me.thePen2)
            DrawLine(g, theAlternate.Baseline, Me.thePen3)
            DrawLine(g, theAlternate.Descender, Me.thePen4)

            Me.theListBox.Items.Add(String.Empty)
        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 RecognitionResultForm_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

        Me.thePen1.Dispose()
        Me.thePen1 = Nothing
        Me.thePen2.Dispose()
        Me.thePen2 = Nothing
        Me.thePen3.Dispose()
        Me.thePen3 = Nothing
        Me.thePen4.Dispose()
        Me.thePen4 = Nothing
    End Sub

    ' Helper function to draw the lines.
    Private Sub DrawLine(ByVal g As System.Drawing.Graphics, _
        ByVal line As Microsoft.Ink.Line, ByVal pen As System.Drawing.Pen)

        Dim point1 As System.Drawing.Point = line.BeginPoint
        Dim point2 As System.Drawing.Point = line.EndPoint

        Me.theInkCollector.Renderer.InkSpaceToPixel(g, point1)
        Me.theInkCollector.Renderer.InkSpaceToPixel(g, point2)

        g.DrawLine(pen, point1, point2)
    End Sub

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

RecognitionAlternate Classe

Membri RecognitionAlternate

Spazio dei nomi Microsoft.Ink

Line

RecognitionAlternate.AlternatesWithConstantPropertyValues

RecognitionAlternate.LineAlternates

RecognitionAlternate.Ascender

RecognitionAlternate.Descender

RecognitionAlternate.Midline