Share via


RecognitionAlternate.GetPropertyValue Method

Returns the value of a specified RecognitionProperty of the RecognitionAlternate object.

Namespace: Microsoft.Ink
Assembly: Microsoft.Ink (in microsoft.ink.dll)

Syntax

'Declaration
Public Function GetPropertyValue ( _
    g As Guid _
) As Byte()
'Usage
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[]
Not applicable.

Parameters

  • g
    The property of the alternate to return, as a globally unique identifier (GUID) for one of the fields on the RecognitionProperty object.

Return Value

Returns the value of the property type in the form of a byte array. The return value is interpreted differently for each property type.

Remarks

Use this method to obtain property values for RecognitionProperty objects that have no corresponding helper property on the RecognitionAlternate object. Helper properties on the RecognitionAlternate object include the Confidence and LineNumber properties.

The following table describes the type of value returned in the byte array.

RecognitionProperty Type

Description

ConfidenceLevel

RecognitionConfidence enumeration value

HotPoint

Point object

LineMetrics

Equivalent to the LATTICE_METRICS Structure structure

LineNumber

Int32 value

MaximumStrokeCount

Not used

PointsPerInch

Not used

Segmentation

Not used. Use the AlternatesWithConstantPropertyValues method instead.

To learn which Recognizer properties are exposed on alternate, first use the SupportedProperties property to see which properties are potentially available. These properties may or may not be passed on to the RecognitionAlternate. Then use GetPropertyValue to determine which properties are exposed on the RecognitionAlternate.

Note

Not all Recognizer properties are passed to the RecognitionAlternate object. For example, the Microsoft® gesture recognizer exposes HotPoint that can only be queried through the SupportedProperties property. The HotPoint property is not exposed on a RecognitionAlternate.

Example

This C# example displays the baseline used in the recognition of a Strokes collection. The GetPropertyValue method gets the line metrics from the top alternate. Then the Renderer object attached to an InkOverlay, theInkOverlay, is used to convert the ink space coordinates to pixel coordinates. Lastly, the baseline is drawn in green. This example assumes that you have already checked the SupportedProperties property to make sure that the LineMetrics property is supported.

[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();
        }
    }

This Microsoft Visual Basic® .NET example displays the baseline used in the recognition of a Strokes collection. The GetPropertyValue method gets the line metrics from the top alternate. Then the Renderer object attached to an InkOverlay, theInkOverlay, is used to convert the ink space coordinates to pixel coordinates. Lastly, the baseline is drawn in green. This example assumes that you have already checked the SupportedProperties property to make sure that the LineMetrics property is supported.

[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

Platforms

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

Version Information

.NET Framework

Supported in: 3.0

See Also

Reference

RecognitionAlternate Class
RecognitionAlternate Members
Microsoft.Ink Namespace
RecognitionAlternate.AlternatesWithConstantPropertyValues
RecognitionProperty