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 添加笔画或从中移除笔画,请使用 AddStroke、AddStrokes、RemoveStroke() 或 RemoveStrokes() 方法。这些方法更新 DirtyRegion 属性,该属性定义包含下一分析操作要分析的笔画的区域。
若要分析墨迹,请使用 Analyze 或 BackgroundAnalyze() 方法。在分析过程中,InkAnalyzer 执行布局分析、笔画分类和手写识别。
在分析过程中,InkAnalyzer 将引发一些事件。设置 SynchronizingObject 属性可指定 InkAnalyzer 在哪个线程上引发后台分析过程中所生成的事件。许多 InkAnalyzer 事件都支持 InkAnalyzer 的数据代理功能。有关更多信息,请参见Data Proxy with Ink Analysis。
若要从事件处理程序内部停止分析过程,请调用 Abort 方法。
若要修改墨迹分析器用于识别手写的语言,请使用 SetStrokeLanguageId() 或 SetStrokesLanguageId()。若要修改墨迹分析器对特定笔画的分类方式,请使用 SetStrokeType() 或 SetStrokesType()。
InkAnalyzer 加载所有已安装的墨迹识别器。InkRecognizersByPriority() 属性获取包含每个可用 InkRecognizer 的 InkRecognizerCollection。如果有多个墨迹识别器支持特定语言,可使用 SetHighestPriorityInkRecognizer(InkRecognizer) 指定负责处理给定语言的笔画的墨迹识别器。
有关为墨迹分析操作提供上下文的更多信息,请参见 CreateAnalysisHint、DeleteAnalysisHint() 和 GetAnalysisHints。
墨迹分析器以字符串或 ContextNode 对象树的形式表示分析结果。若要访问已识别的字符串,请使用 GetRecognizedString()。若要访问树的根,请使用 RootNode 属性。墨迹分析器的以下方法可用于查找特定上下文节点或文本。
GetNodesFromTextRange(Int32%, Int32%)
GetTextRangeFromNodes(ContextNodeBaseCollection, Int32%, Int32%)
若要处理备选的分析结果,请使用 GetAlternates 和 ModifyTopAlternate。
若要保存分析结果,请使用 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
另请参见
参考
System.Windows.Ink.AnalysisAlternate
System.Windows.Ink.AnalysisHintNode
System.Windows.Ink.AnalysisStatus