RecognitionAlternate.Descender 属性
获取表示单行文本 的 RecognitionAlternate 对象的下行字母 线。
命名空间: Microsoft.Ink
程序集: Microsoft.Ink(在 Microsoft.Ink.dll 中)
语法
声明
Public ReadOnly Property Descender As Line
用法
Dim instance As RecognitionAlternate
Dim value As Line
value = instance.Descender
public Line Descender { get; }
public:
property Line Descender {
Line get ();
}
/** @property */
public Line get_Descender()
public function get Descender () : Line
属性值
类型:Microsoft.Ink.Line
表示单行文本 的 RecognitionAlternate 对象的下行字母 线。
备注
对于西方语言,下行部分指小写字母的低于基线 的部分,如字母“p”中圆形部分最低点之下的竖线。下行字母线为与下行字母底部齐平的假想水平线。
备注
如果识别备选项 跨一行文本中的多个识别段,则此属性返回一条与备选项基线 平行的线。下行字母线与基线之间的距离由第一个段中的相应距离确定。
使用 AlternatesWithConstantPropertyValues 方法,并将 g 参数设置为 RecognitionProperty.Segmentation 全局唯一标识符 (GUID),可以获取与原始备选项分段对应的由单段识别备选项组成的集合。
备注
如果识别备选项跨多行,则此属性会引发 COMException 异常。使用 LineAlternates 属性可以获取对应于多行识别备选项的单行识别备选项的集合。
示例
此 C# 示例定义窗体 RecognitionResultForm 的事件处理程序,该窗体中已添加了 ListBox 控件 theListBox 和两个 Button 控件(theRecognizeButton 和 theGetDataButton)。此示例还定义一个 InkCollector (theInkCollector)、一个 RecognizerContext (theRecognizerContext) 和一个 RecognitionResult (theRecognitionResult),用于收集墨迹和执行识别。
theRecognizeButton 的单击事件的事件处理程序对墨迹收集器中的笔画执行识别,并将识别结果的最佳备选项的有关信息放置到 theListBox 中。
theGetDataButton 的单击事件的事件处理程序获取最佳备选项的行备选项集合。然后,该处理程序绘制每个行备选项的上行字母 线、中线、基线 和下行字母 线。该处理程序还将每个行备选项的行号和置信级别的有关信息放置到 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);
}
此 Microsoft(R) Visual Basic(R) .NET 示例定义窗体 RecognitionResultForm 的事件处理程序,该窗体中已添加了 ListBox 控件 theListBox 和两个 Button 控件(theRecognizeButton 和 theGetDataButton)。此示例还定义一个 InkCollector (theInkCollector)、一个 RecognizerContext (theRecognizerContext) 和一个 RecognitionResult (theRecognitionResult),用于收集墨迹和执行识别。
theRecognizeButton 的单击事件的事件处理程序对墨迹收集器中的笔画执行识别,并将识别结果的最佳备选项的有关信息放置到 theListBox 中。
theGetDataButton 的单击事件的事件处理程序获取最佳备选项的行备选项集合。然后,该处理程序绘制每个行备选项的上行字母 线、中线、基线 和下行字母 线。该处理程序还将每个行备选项的行号和置信级别的有关信息放置到 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
平台
Windows Vista
.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。
版本信息
.NET Framework
受以下版本支持:3.0
另请参见
参考
RecognitionAlternate.AlternatesWithConstantPropertyValues