共用方式為


AnalysisStatus 類別

表示分析作業的狀態,包括指出是否已順利完成分析、是否發生任何警告,以及套用變更 (如果有的話) 的位置。

命名空間:  Microsoft.Ink
組件:  Microsoft.Ink.Analysis (在 Microsoft.Ink.Analysis.dll 中)

語法

'宣告
Public Class AnalysisStatus
'用途
Dim instance As AnalysisStatus
public class AnalysisStatus
public ref class AnalysisStatus
public class AnalysisStatus
public class AnalysisStatus

範例

下列範例將說明如何在筆墨分析之後尋找警告。當您使用可能尚未安裝的 Afrikaans 辨識器執行分析時,分析將會失敗,並出現 InkRecognizerInitializationFailed 警告的 AnalysisWarningCode 值。在這個範例中,偵錯資訊會透過 System.Diagnostics.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();
            }

繼承階層架構

System.Object
  Microsoft.Ink.AnalysisStatus

執行緒安全

這個型別的任何 Public static (在 Visual Basic 中為 Shared) 成員都具備執行緒安全。並非所有的執行個體成員都是安全執行緒。

平台

Windows Vista

.NET Framework 和 .NET Compact Framework 並不支援各種平台的所有版本。如需支援平台版本的相關資訊,請參閱 .NET Framework 系統需求

版本資訊

.NET Framework

支援版本:3.0

請參閱

參考

AnalysisStatus 成員

Microsoft.Ink 命名空間

InkAnalyzer.Analyze

Microsoft.Ink.ResultsUpdatedEventArgs

System.Windows.Ink.AnalysisCore.AnalysisWarningCode