AnalysisStatus.Successful 属性

返回分析操作结果的布尔摘要。

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

语法

声明
Public ReadOnly Property Successful As Boolean
用法
Dim instance As AnalysisStatus
Dim value As Boolean

value = instance.Successful
public bool Successful { get; }
public:
property bool Successful {
    bool get ();
}
/** @property */
public boolean get_Successful()
public function get Successful () : boolean

属性值

类型:System.Boolean
如果分析操作完成而没有任何警告,则为 true。如果至少发生一个警告,则为 false。

示例

下面的示例演示如何在墨迹分析之后查找警告。用 Afrikaans 识别器(可能您还未安装)执行分析时,分析将失败,并返回 InkRecognizerInitializationFailed 警告。这意味着 Successful 属性为 false。在此简单示例中,只是使用 Debug.WriteLine 将调试信息直接发送到输出窗口。

' Analyze using Afrikaans recognizer.
' You are unlikely to have this recognizer, so it will raise a warning.
Dim afrikaansInkAnalyzer As New InkAnalyzer(theInkCollector.Ink, Me)
Dim afrikaansLanguageId As Integer = 1078


' Access to the Strokes property returns a copy of the Strokes object.
' This copy must be implicitly (via using statement) or explicitly
' disposed of in order to avoid a memory leak.
Dim allStrokes As Strokes = theInkCollector.Ink.Strokes
afrikaansInkAnalyzer.AddStrokes(allStrokes, afrikaansLanguageId)
Dim status As AnalysisStatus = afrikaansInkAnalyzer.Analyze()
' Dispose of the copy of the theInkCollector.Ink.Strokes object
allStrokes.Dispose()


' Display any warnings
If status.Warnings.Count > 0 Then
    ' Initialize warning message
    Dim message As String = "Analysis resulted in the following warnings:" & Environment.NewLine

    ' Note: We should only expect to see the BackgroundException warning if
    ' we were performing background analysis.
    ' Loop through warnings
    Dim warning As AnalysisWarning
    For Each warning In status.Warnings
        Select Case warning.WarningCode
            Case Microsoft.Ink.AnalysisWarningCode.Aborted
                message = message & "Analysis operation was aborted. "
            Case Microsoft.Ink.AnalysisWarningCode.BackgroundException
                ' This is a fatal warning. Throw an exception.
                ' First, attempt to save as much document state as possible 
                ' ...

                ' Rethrow the exception so that it can be caught by an exception
                ' handler (or if there is no exception handler, a program error 
                ' debugger such as Dr. Watson can be invoked)
                Throw (warning.BackgroundException)
            Case Microsoft.Ink.AnalysisWarningCode.ConfirmedWithoutInkRecognition
                message = message & "Node was confirmed without ink recognition having been performed. "
            Case Microsoft.Ink.AnalysisWarningCode.ContextNodeLocationNotSet
                message = message & "Node does not have a proper location set. "
            Case Microsoft.Ink.AnalysisWarningCode.FactoidCoercionNotSupported
                message = message & "Factoid coercion failed "
                If (Not warning.AnalysisHint Is Nothing) AndAlso (Not warning.AnalysisHint.Factoid Is Nothing) Then
                    message = message & "for factoid: " & warning.AnalysisHint.Factoid & ". "
                End If
            Case Microsoft.Ink.AnalysisWarningCode.FactoidNotSupported
                If (Not warning.AnalysisHint Is Nothing) AndAlso (Not warning.AnalysisHint.Factoid Is Nothing) Then
                    message = message & warning.AnalysisHint.Factoid & " factoid was not respected. "
                End If
            Case Microsoft.Ink.AnalysisWarningCode.GuideNotSupported
                message = message & "Guide was not respected. "
            Case Microsoft.Ink.AnalysisWarningCode.AddInkToRecognizerFailed
                message = message & "Ink could not be added to the InkRecognizer. "
            Case Microsoft.Ink.AnalysisWarningCode.InkRecognizerInitializationFailed
                message = message & "The InkRecognizer failed to initialize. "
            Case Microsoft.Ink.AnalysisWarningCode.NoMatchingInkRecognizerFound
                message = message & "There are no ink recognizers meeting the language or capabilities needed. "
            Case Microsoft.Ink.AnalysisWarningCode.LanguageIdNotRespected
                message = message & "The language ID set on a stroke did not match the language ID of the InkRecognizer. "
            Case Microsoft.Ink.AnalysisWarningCode.PartialDictionaryTermsNotSupported
                message = message & "Partial dictionary terms could not be returned from the text recognizer. "
            Case Microsoft.Ink.AnalysisWarningCode.TextRecognitionProcessFailed
                message = message & "The text recognition process failed. "
            Case Microsoft.Ink.AnalysisWarningCode.SetPrefixSuffixFailed
                message = message & "The text recognizer was unable to respect either the prefix or suffix. "
                If (Not warning.AnalysisHint Is Nothing) AndAlso (Not warning.AnalysisHint.PrefixText Is Nothing) Then
                    message = message & "Prefix: " & warning.AnalysisHint.PrefixText & ". "
                End If
                If (Not warning.AnalysisHint Is Nothing) AndAlso (Not warning.AnalysisHint.SuffixText Is Nothing) Then
                    message = message & "Suffix: " & warning.AnalysisHint.SuffixText & ". "
                End If
            Case Microsoft.Ink.AnalysisWarningCode.WordlistNotSupported
                message = message & "Wordlist was not respected. "
            Case Microsoft.Ink.AnalysisWarningCode.WordModeNotSupported
                message = message & "Word mode was not respected. "
        End Select


        ' Add node id information
        Dim id As Guid
        For Each id In warning.GetNodeIds()
            message = message & "Id: " & id.ToString() & " "
        Next id


        ' Add hint information
        If Not (warning.AnalysisHint Is Nothing) Then
            Dim hint As AnalysisHintNode = warning.AnalysisHint
            message = message & Environment.NewLine & "Hint information: "
            message = message & "AllowPartialDictionaryTerms"
            If hint.AllowPartialDictionaryTerms = True Then
                message = message & " = True "
            Else
                message = message & " = False "
            End If
            message = message & "CoerceToFactoid"
            If hint.CoerceToFactoid = True Then
                message = message & " = True "
            Else
                message = message & " = False "
            End If
            If Not hint.Factoid Is Nothing Then
                message = message & "Factoid = " & warning.AnalysisHint.Factoid & " "
            End If
            If hint.Guide.DrawnBox <> Rectangle.Empty Then
                message = message & "Guide Drawn Box = " & hint.Guide.DrawnBox.ToString()
            End If
            If hint.Guide.WritingBox <> Rectangle.Empty Then
                message = message & "Guide Writing Box = " & hint.Guide.WritingBox.ToString()
            End If
            message = message & String.Format("Guide = ({0}, {1})", _
                 hint.Guide.Columns, hint.Guide.Rows)
            If Not hint.Name Is Nothing Then
                message = message & "Name = " & warning.AnalysisHint.Name & " "
            End If
            If Not hint.PrefixText Is Nothing Then
                message = message & "PrefixText = " & warning.AnalysisHint.PrefixText & " "
            End If
            If Not hint.SuffixText Is Nothing Then
                message = message & "SuffixText = " & warning.AnalysisHint.SuffixText & " "
            End If
            message = message & "WordMode"
            If hint.WordMode = True Then
                message = message & " = True"
            Else
                message = message & " = False"
            End If
        End If

        message = message & Environment.NewLine
    Next warning

    ' Show in the output window
    System.Diagnostics.Debug.WriteLine(message)
End If
If status.Successful Then
    Me.labelResult.Text = afrikaansInkAnalyzer.GetRecognizedString()
End If

            // Analyze using Afrikaans recognizer.
            // You are unlikely to have this recognizer, so it will raise a warning.
            InkAnalyzer afrikaansInkAnalyzer = new InkAnalyzer(theInkCollector.Ink, this);
            int afrikaansLanguageId = 1078;

            // Access to the Strokes property returns a copy of the Strokes object.
            // This copy must be implicitly (via using statement) or explicitly
            // disposed of in order to avoid a memory leak.
            Strokes allStrokes = theInkCollector.Ink.Strokes;
            afrikaansInkAnalyzer.AddStrokes(allStrokes, afrikaansLanguageId);
            AnalysisStatus status = afrikaansInkAnalyzer.Analyze();
            // Dispose of the copy of the theInkCollector.Ink.Strokes object
            allStrokes.Dispose();

            // Note: We should only expect to see the BackgroundException warning if
            // we were performing background analysis.
            // Display any warnings
            if (!status.Successful)
            {
                // Initialize warning message
                string message = "Analysis resulted in the following warnings:" + Environment.NewLine;

                // Loop through warnings
                foreach (AnalysisWarning warning in status.Warnings)
                {
                    switch (warning.WarningCode)
                    {
                        case Microsoft.Ink.AnalysisWarningCode.Aborted:
                            message += "Analysis operation was aborted. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.BackgroundException:
                            // This is a fatal warning. Throw an exception.
                            // First, attempt to save as much doc state as possible 
                            // ...

                            // Rethrow the exception so that it can be caught by an exception
                            // handler (or if there is no exception handler, a program error 
                            // debugger such as Dr. Watson can be invoked)
                            throw(warning.BackgroundException);
                        case Microsoft.Ink.AnalysisWarningCode.ConfirmedWithoutInkRecognition:
                            message += "Node was confirmed without ink recognition having been performed. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.ContextNodeLocationNotSet:
                            message += "Node does not have a proper location set. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.FactoidCoercionNotSupported:
                            message += "Factoid coercion failed ";
                            if (warning.AnalysisHint != null && warning.AnalysisHint.Factoid != null)
                            {
                                message += "for factoid: " + warning.AnalysisHint.Factoid + ". ";
                            } 
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.FactoidNotSupported:
                            if (warning.AnalysisHint != null && warning.AnalysisHint.Factoid != null)
                            {
                                message += warning.AnalysisHint.Factoid + " factoid was not respected. ";
                            }
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.GuideNotSupported:
                            message += "Guide was not respected. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.AddInkToRecognizerFailed:
                            message += "Ink could not be added to the InkRecognizer. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.InkRecognizerInitializationFailed:
                            message += "The InkRecognizer failed to initialize. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.NoMatchingInkRecognizerFound:
                            message += "There are no ink recognizers meeting the language or capabilities needed. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.LanguageIdNotRespected:
                            message += "The language ID set on a stroke did not match the language ID of the InkRecognizer. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.PartialDictionaryTermsNotSupported:
                            message += "Partial dictionary terms could not be returned from the text recognizer. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.TextRecognitionProcessFailed:
                            message += "The text recognition process failed. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.SetPrefixSuffixFailed:
                            message += "The text recognizer was unable to respect either the prefix or suffix. ";
                            if (warning.AnalysisHint != null && warning.AnalysisHint.PrefixText != null)
                            {
                                message += "Prefix: " + warning.AnalysisHint.PrefixText + ". ";
                            }
                            if (warning.AnalysisHint != null && warning.AnalysisHint.SuffixText != null)
                            {
                                message += "Suffix: " + warning.AnalysisHint.SuffixText + ". ";
                            }
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.WordlistNotSupported:
                            message += "Wordlist was not respected. ";
                            break;
                        case Microsoft.Ink.AnalysisWarningCode.WordModeNotSupported:
                            message += "Word mode was not respected. ";
                            break;
                    }

                    // Add node id information
                    foreach (Guid id in warning.GetNodeIds())
                        message += "Id: " + id.ToString() + " ";

                    // Add hint information
                    if (warning.AnalysisHint != null)
                    {
                        AnalysisHintNode hint = warning.AnalysisHint;
                        message += Environment.NewLine + "Hint information: ";
                        message += "AllowPartialDictionaryTerms";
                        if (hint.AllowPartialDictionaryTerms)
                            message += " = true ";
                        else
                            message += " = false ";
                        message += "CoerceToFactoid";
                        if (hint.CoerceToFactoid)
                            message += " = true ";
                        else
                            message += " = false ";
                        if (hint.Factoid != null)
                            message += "Factoid = " + warning.AnalysisHint.Factoid + " ";
                        if (hint.Guide.DrawnBox != Rectangle.Empty)
                            message += "Guide Drawn Box = " + hint.Guide.DrawnBox.ToString();
                        if (hint.Guide.WritingBox != Rectangle.Empty)
                            message += "Guide Writing Box = " + hint.Guide.WritingBox.ToString();
                        if (hint.Name != null)
                            message += "Name = " + warning.AnalysisHint.Name + " ";
                        if (hint.PrefixText != null)
                            message += "PrefixText = " + warning.AnalysisHint.PrefixText + " ";
                        if (hint.SuffixText != null)
                            message += "SuffixText = " + warning.AnalysisHint.SuffixText + " ";
                        message += "WordMode";
                        if (hint.WordMode)
                            message += " = true";
                        else
                            message += " = false";
                    }
                    message += Environment.NewLine;
                }

                // Show in the output window
                System.Diagnostics.Debug.WriteLine(message);
            }

            if (status.Successful)
            {
                this.resultsLabel.Text = afrikaansInkAnalyzer.GetRecognizedString();
            }

平台

Windows Vista

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

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

AnalysisStatus 类

AnalysisStatus 成员

Microsoft.Ink 命名空间