RecognitionAlternate.LineAlternates 屬性
取得 RecognitionAlternates 集合,這個集合內每個替代項目都在不同行上。
命名空間: Microsoft.Ink
組件: Microsoft.Ink (在 Microsoft.Ink.dll 中)
語法
'宣告
Public ReadOnly Property LineAlternates As RecognitionAlternates
'用途
Dim instance As RecognitionAlternate
Dim value As RecognitionAlternates
value = instance.LineAlternates
public RecognitionAlternates LineAlternates { get; }
public:
property RecognitionAlternates^ LineAlternates {
RecognitionAlternates^ get ();
}
/** @property */
public RecognitionAlternates get_LineAlternates()
public function get LineAlternates () : RecognitionAlternates
屬性值
型別:Microsoft.Ink.RecognitionAlternates
RecognitionAlternates 集合,這個集合內每個替代項目都在不同行上。
備註
如果有筆墨段落的辨識替代項目,您可以使用 LineAlternates 屬性取得辨識替代項目的集合,當中每個替代項目都表示不同行的段落。
除了選擇透過將參數設定為 LineNumber 來呼叫 AlternatesWithConstantPropertyValues 方法以外,您也可以選擇使用這個屬性。如需替代項目屬性的詳細資訊,請參閱 RecognitionProperty 類別。
注意事項: |
---|
繪製筆墨時,Recognizer 物件會自動決定行度量資訊。 |
範例
這個 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® Visual Basic® .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