InkAnalyzer 类

提供对布局分析、书写和绘制分类以及手写识别的访问。

命名空间:  Microsoft.Ink
程序集:  Microsoft.Ink.Analysis(在 Microsoft.Ink.Analysis.dll 中)

语法

声明
Public Class InkAnalyzer _
    Implements IDisposable
用法
Dim instance As InkAnalyzer
public class InkAnalyzer : IDisposable
public ref class InkAnalyzer : IDisposable
public class InkAnalyzer implements IDisposable
public class InkAnalyzer implements IDisposable

备注

若要向用于分析的 InkAnalyzer 添加笔画或从中移除笔画,请使用 AddStrokeAddStrokesInkAnalyzer.RemoveStrokeRemoveStrokes 方法。这些方法更新 DirtyRegion 属性,该属性是下一分析操作要分析的笔画的区域。

若要分析墨迹,请使用 AnalyzeBackgroundAnalyze 方法。在分析过程中,InkAnalyzer 执行布局分析、笔画分类和手写识别。

在分析过程中,InkAnalyzer 将引发一些事件。设置 SynchronizingObject 属性可以指定 InkAnalyzer 在哪个线程上引发后台分析过程中生成的事件。许多 InkAnalyzer 事件都支持 InkAnalyzer 的数据代理功能。有关更多信息,请参见Data Proxy with Ink Analysis

若要从事件处理程序内部停止分析进程,请调用 Abort 方法。

若要修改墨迹分析器用于识别手写的语言,请使用 InkAnalyzer.SetStrokeLanguageIdInkAnalyzer.SetStrokesLanguageId。若要修改墨迹分析器对特定笔画的分类方式,请使用 InkAnalyzer.SetStrokeTypeInkAnalyzer.SetStrokesType

InkAnalyzer 加载所有已安装的墨迹识别器。GetInkRecognizersByPriority 方法获取包含每个可用 InkRecognizerInkRecognizerCollection。如果有多个墨迹识别器支持特定语言,可使用 SetAsHighestPriorityInkRecognizer 设置使用哪个墨迹识别器处理该语言的笔画。

有关为墨迹分析操作提供上下文的更多信息,请参见 CreateAnalysisHintDeleteAnalysisHintGetAnalysisHints

墨迹分析器以字符串或 ContextNode 对象树的形式表示分析结果。若要访问已识别的字符串,请使用 GetRecognizedString。若要访问树的根,请使用 RootNode 属性。墨迹分析器的以下方法可用于查找特定上下文节点或文本。

若要处理备选的分析结果,请使用 GetAlternatesModifyTopAlternate

若要保存分析结果,请使用 SaveResults。若要加载保存的结果,请使用 Load

有关使用 InkAnalyzer 分析墨迹的更多信息,请参见Ink Analysis Overview

必须在已附加事件处理程序的任何 InkAnalyzer 对象超出范围之前,对该对象显式调用 Dispose 方法。

示例

此示例执行以下操作。

  • 初始化新的 Microsoft.Ink.Ink 对象 theInk。

  • Ink.InkAdded 事件处理程序 theInk_InkAdded 附加到 theInk。

  • 初始化新的 InkAnalyzer (theInkAnalyzer),它可以分析来自 theInk 的笔画数据。

' Create the Ink for use with the InkCollector and attach
' event handlers.
Me.theInk = New Microsoft.Ink.Ink()
AddHandler Me.theInk.InkAdded, AddressOf theInk_InkAdded

' Create the InkAnalyzer.
Me.theInkAnalyzer = New Microsoft.Ink.InkAnalyzer(Me.theInk, Me)
// Create the Ink for use with the InkCollector and attach
// event handlers.
this.theInk = new Microsoft.Ink.Ink();
this.theInk.InkAdded +=
    new Microsoft.Ink.StrokesEventHandler(theInk_InkAdded);

// Create the InkAnalyzer.
this.theInkAnalyzer =
    new Microsoft.Ink.InkAnalyzer(this.theInk, this);

在此示例中,theInk_InkAdded 事件处理程序随后获取已添加到 theInk 的笔画,并将这些笔画添加到 theInkAnalyzer。

''' <summary>
''' The ink's InkAdded event handler.
''' </summary>
''' <param name="sender">The source of the event.</param>
''' <param name="e">The event data.</param>
Sub theInk_InkAdded( _
    ByVal sender As Object, ByVal e As Microsoft.Ink.StrokesEventArgs)

    ' This event handler is attached to an Ink object.
    Dim theInk As Microsoft.Ink.Ink = DirectCast(sender, Microsoft.Ink.Ink)

    ' Add the new strokes to the InkAnalyzer.
    Me.theInkAnalyzer.AddStrokes(theInk.CreateStrokes(e.StrokeIds))

End Sub 'theInk_InkAdded
/// <summary>
/// The ink's InkAdded event handler.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The event data.</param>
void theInk_InkAdded(object sender, Microsoft.Ink.StrokesEventArgs e)
{
    // This event handler is attached to an Ink object.
    Microsoft.Ink.Ink theInk = sender as Microsoft.Ink.Ink;

    // Add the new strokes to the InkAnalyzer.
    this.theInkAnalyzer.AddStrokes(theInk.CreateStrokes(e.StrokeIds));
}

继承层次结构

System.Object
  Microsoft.Ink.InkAnalyzer

线程安全

此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

InkAnalyzer 成员

Microsoft.Ink 命名空间

Microsoft.Ink.AnalysisAlternate

Microsoft.Ink.AnalysisHintNode

Microsoft.Ink.AnalysisStatus

Microsoft.Ink.ContextLink

Microsoft.Ink.ContextNode