InkRecognizer.SetAsHighestPriorityInkRecognizer 方法

InkAnalyzer 内部有序识别器列表中,将此 InkRecognizer 设置为最高优先级。

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

语法

声明
Public Sub SetAsHighestPriorityInkRecognizer
用法
Dim instance As InkRecognizer

instance.SetAsHighestPriorityInkRecognizer()
public void SetAsHighestPriorityInkRecognizer()
public:
void SetAsHighestPriorityInkRecognizer()
public void SetAsHighestPriorityInkRecognizer()
public function SetAsHighestPriorityInkRecognizer()

备注

每个识别器都包含一些值来描述该识别器支持的语言和功能。通过将可用识别器组织到有序列表中,InkAnalyzer 可在有两个或更多识别器支持相同的语言和功能时确定要使用哪个识别器。InkAnalyzer 将存储一个内部有序识别器列表。每次调用内部有序列表时都会动态填充该列表。

备注

如果由于访问注册表导致性能下降,可以将其限制为仅在创建 InkAnalyzer 时才检查注册表值。

内部列表根据以下逻辑排序:

  1. 通过查看“Recognizers Precedence”注册表项值,检查控制面板应用程序是否设置了顺序:

    1. “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\TPG\Recognizers Precedence”

    2. 每个识别器都作为注册表子项按 GUID 列出。

    3. 每个注册表子项都有一个名为“Order”的 dword 值,该值从 0 开始(0 表示要使用的第一个识别器,1 表示要使用的第二个识别器……,n 表示要使用的最后一个识别器)。

    4. 如果“Recognizers Precedence”项不存在,或者已经损坏,请转至下一步骤。

  2. 通过检查“System Recognizer”注册表项,查看是否所有已安装的 Microsoft 识别器都出现在有序列表中。在系统上发现的但未包含在有序列表中的任何 Microsoft 识别器都将按照其被发现的顺序添加到该列表的末尾。

  3. 通过检查“Recognizer”注册表项,查看是否所有已安装的外部(第三方)识别器都出现在有序列表中。在系统上发现的但未包含在有序列表中的任何外部识别器都将按照其被发现的顺序添加到该列表的末尾。

确立默认排序顺序以后,应用程序可以调用此方法并将某个识别器提升至列表顶部,从而更改或重写默认排序顺序。

对识别器的使用将根据其在列表中的次序确定:

  • 分析器将从列表中的第一个识别器开始。

  • 首先测试第一个识别器,检查该识别器是否支持正在识别的墨迹的语言和功能。

  • 如果支持,则使用该识别器。

  • 如果不支持,则检查列表中的下一个识别器。继续循环访问该列表,直至找到符合条件的识别器或将列表穷尽为止。

  • 如果没有找到符合条件的识别器,则返回 TPG_No_Suitable_Recognizer_Found 异常。

示例

此示例检查对 InkAnalyzer 对象可用的每一个 InkRecognizer。如果 InkRecognizer 支持语言 ID 1031(德语),则将其设置为最高优先级识别器。

Dim allInkRecognizers As InkRecognizerCollection = mInkAnalyzer.GetInkRecognizersByPriority()
For Each IR As InkRecognizer In allInkRecognizers
    For Each langID As Integer In IR.GetLanguages()
        If langID = 1031 Then
            IR.SetAsHighestPriorityInkRecognizer()
        End If
    Next
Next
InkRecognizerCollection allInkRecognizers = mInkAnalyzer.GetInkRecognizersByPriority();
foreach (InkRecognizer IR in allInkRecognizers)
{
    foreach(int langID in IR.GetLanguages()) 
    {
        if (langID == 1031)
        {
            IR.SetAsHighestPriorityInkRecognizer();
        }
    }
}

平台

Windows Vista

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

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

InkRecognizer 类

InkRecognizer 成员

Microsoft.Ink 命名空间