InkAnalyzer 类

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

命名空间:  System.Windows.Ink
程序集:  IAWinFX(在 IAWinFX.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 添加笔画或从中移除笔画,请使用 AddStrokeAddStrokes、RemoveStroke() 或 RemoveStrokes() 方法。这些方法更新 DirtyRegion 属性,该属性定义包含下一分析操作要分析的笔画的区域。

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

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

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

若要修改墨迹分析器用于识别手写的语言,请使用 SetStrokeLanguageId() 或 SetStrokesLanguageId()。若要修改墨迹分析器对特定笔画的分类方式,请使用 SetStrokeType() 或 SetStrokesType()。

InkAnalyzer 加载所有已安装的墨迹识别器。InkRecognizersByPriority() 属性获取包含每个可用 InkRecognizerInkRecognizerCollection。如果有多个墨迹识别器支持特定语言,可使用 SetHighestPriorityInkRecognizer(InkRecognizer) 指定负责处理给定语言的笔画的墨迹识别器。

有关为墨迹分析操作提供上下文的更多信息,请参见 CreateAnalysisHint、DeleteAnalysisHint() 和 GetAnalysisHints

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

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

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

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

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

示例

下面的示例创建一个新的 InkAnalyzer,并将 StrokesChanged 事件处理程序附加到 InkCanvas(名为 theInkCanvas)上的 Strokes 属性。

theInkAnalyzer = New InkAnalyzer()

AddHandler theInkCanvas.Strokes.StrokesChanged, AddressOf Strokes_StrokesChanged
theInkAnalyzer = new InkAnalyzer();

theInkCanvas.Strokes.StrokesChanged += 
    new StrokeCollectionChangedEventHandler(Strokes_StrokesChanged);

下面的示例定义 Strokes_StrokesChanged 事件处理程序;如果笔画已添加到 theInkCanvas,该事件处理程序会将其添加到 theInkAnalyzer 中。如果笔画已从 theInkCanvas 中移除,该事件处理程序也会将其从 theInkAnalyzer 中移除。

' This event occurs whenever a stroke is added, removed, or partially erased
' from the InkCanvas.
Sub Strokes_StrokesChanged(ByVal sender As Object, ByVal e As StrokeCollectionChangedEventArgs) 
    If e.Added.Count > 0 Then
        theInkAnalyzer.AddStrokes(e.Added)
    End If

    If e.Removed.Count > 0 Then
        theInkAnalyzer.RemoveStrokes(e.Removed)
    End If

End Sub 'Strokes_StrokesChanged
// This event occurs whenever a stroke is added, removed, or partially erased
// from the InkCanvas.
void Strokes_StrokesChanged(object sender, StrokeCollectionChangedEventArgs e)
{
    if (e.Added.Count > 0)
    {
        theInkAnalyzer.AddStrokes(e.Added);
    }

    if (e.Removed.Count > 0)
    {
        theInkAnalyzer.RemoveStrokes(e.Removed);
    }
}

继承层次结构

System.Object
  System.Windows.Ink.InkAnalyzer

线程安全

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

平台

Windows Vista

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

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

InkAnalyzer 成员

System.Windows.Ink 命名空间

System.Windows.Ink.AnalysisAlternate

System.Windows.Ink.AnalysisHintNode

System.Windows.Ink.AnalysisStatus

System.Windows.Ink.ContextLink

System.Windows.Ink.ContextNode