RecognitionAlternate.GetPropertyValue 方法

返回 RecognitionAlternate 对象的指定 RecognitionProperty 的值。

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

语法

声明
Public Function GetPropertyValue ( _
    g As Guid _
) As Byte()
用法
Dim instance As RecognitionAlternate
Dim g As Guid
Dim returnValue As Byte()

returnValue = instance.GetPropertyValue(g)
public byte[] GetPropertyValue(
    Guid g
)
public:
array<unsigned char>^ GetPropertyValue(
    Guid g
)
public byte[] GetPropertyValue(
    Guid g
)
public function GetPropertyValue(
    g : Guid
) : byte[]

参数

返回值

类型:array<System.Byte[]
以字节数组的形式返回属性类型的值。对每个属性类型的返回值的解释各不相同。

备注

使用此方法可以获取在 RecognitionAlternate 对象上没有相应帮助器属性的 RecognitionProperty 对象的属性值。RecognitionAlternate 对象的帮助器属性包括 ConfidenceLineNumber 属性。

下表描述在字节数组中返回的值的类型。

RecognitionProperty 类型

说明

ConfidenceLevel

RecognitionConfidence 枚举值

HotPoint

Point 对象

LineMetrics

等效于 LATTICE_METRICS Structure 结构

LineNumber

Int32

MaximumStrokeCount

未使用

PointsPerInch

未使用

Segmentation

未使用。请改用 AlternatesWithConstantPropertyValues 方法。

若要了解备选项 公开哪些 Recognizer 属性,请首先使用 SupportedProperties 属性查看哪些属性可能可用。这些属性可能会也可能不会传递到 RecognitionAlternate。然后,使用 GetPropertyValue 确定 RecognitionAlternate 公开哪些属性。

备注

并非所有 Recognizer 属性都会传递到 RecognitionAlternate 对象。例如,Microsoft(R) 笔势识别器公开只能通过 SupportedProperties 属性查询的 HotPointRecognitionAlternate 不公开 HotPoint 属性。

示例

此 C# 示例显示在 Strokes 集合的识别中使用的基线。GetPropertyValue 方法从最佳备选项获取行规格。然后,使用附加到 InkOverlay 对象 theInkOverlay 的 Renderer 对象将墨迹空间 坐标转换为像素坐标。最后,以绿色绘制基线。此示例假定您已经检查了 SupportedProperties 属性,确信 LineMetrics 属性是受支持的。

[C#]

using Microsoft.Ink;
using System.Drawing.Drawing2D;
using System.IO;
//...
    private void DrawBaseline(Strokes theStrokes)
    {
        // Get the top alternate for all the strokes
        RecognizerContext context = new RecognizerContext();
        context.Strokes = theStrokes;
        RecognitionStatus status = new RecognitionStatus();
        RecognitionResult result = context.Recognize(out status);
        RecognitionAlternate topAlternate = result.TopAlternate;

        // Get the line metrics from the top alternate
        byte [] byteArray = topAlternate.GetPropertyValue(RecognitionProperty.LineMetrics);
        using (MemoryStream stream = new MemoryStream(byteArray))
        using (BinaryReader reader = new BinaryReader(stream))
        {
            int startX = reader.ReadInt32();
            int startY = reader.ReadInt32();
            int endX = reader.ReadInt32();
            int endY = reader.ReadInt32();

            // Convert baseline to pixel coordinates
            Graphics tempGraphics = CreateGraphics();
            Point startPoint = new Point(startX, startY);
            Point endPoint = new Point(endX, endY);
            theInkOverlay.Renderer.InkSpaceToPixel(tempGraphics, ref startPoint);
            theInkOverlay.Renderer.InkSpaceToPixel(tempGraphics, ref endPoint);
            tempGraphics.DrawLine(new Pen(Color.Green), startPoint, endPoint);

            // Dispose of temporary graphics
            tempGraphics.Dispose();
        }
    }

此 Microsoft Visual Basic(R) .NET 示例显示在 Strokes 集合的识别中使用的基线。GetPropertyValue 方法从最佳备选项获取行规格。然后,使用附加到 InkOverlay 对象 theInkOverlay 的 Renderer 对象将墨迹空间 坐标转换为像素坐标。最后,以绿色绘制基线。此示例假定您已经检查了 SupportedProperties 属性,确信 LineMetrics 属性是受支持的。

[Visual Basic]

Imports Microsoft.Ink
Imports System.Drawing.Drawing2D
Imports System.IO
'...
    Private Sub DrawBaseline(ByVal theStrokes As Strokes)
        ' Get the top alternate for all the strokes
        Dim context As New RecognizerContext()
        context.Strokes = theStrokes
        Dim status As New RecognitionStatus()
        Dim result As RecognitionResult = context.Recognize(status)
        Dim topAlternate As RecognitionAlternate = result.TopAlternate

        ' Get the line metrics from the top alternate
        Dim byteArray() As Byte = topAlternate.GetPropertyValue(RecognitionProperty.LineMetrics)
        Dim stream As New MemoryStream(byteArray)
        Dim reader As New BinaryReader(stream)

        Dim startX As Integer = reader.ReadInt32()
        Dim startY As Integer = reader.ReadInt32()
        Dim endX As Integer = reader.ReadInt32()
        Dim endY As Integer = reader.ReadInt32()

        ' Convert baseline to pixel coordinates
        Dim tempGraphics As Graphics = CreateGraphics()
        Dim startPoint As New Point(startX, startY)
        Dim endPoint As New Point(endX, endY)
        theInkOverlay.Renderer.InkSpaceToPixel(tempGraphics, startPoint)
        theInkOverlay.Renderer.InkSpaceToPixel(tempGraphics, endPoint)
        tempGraphics.DrawLine(New Pen(Color.Green), startPoint, endPoint)

        ' Clean up
        tempGraphics.Dispose()
        reader.Close()
        stream.Close()
    End Sub

平台

Windows Vista

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

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

RecognitionAlternate 类

RecognitionAlternate 成员

Microsoft.Ink 命名空间

RecognitionAlternate.AlternatesWithConstantPropertyValues

RecognitionProperty