ContextNode.Confirm 方法

设置确认类型,该类型限制 InkAnalyzer 可更改哪些关于节点的内容。

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

语法

声明
Public Sub Confirm ( _
    type As ConfirmationType _
)
用法
Dim instance As ContextNode
Dim type As ConfirmationType

instance.Confirm(type)
public void Confirm(
    ConfirmationType type
)
public:
void Confirm(
    ConfirmationType type
)
public void Confirm(
    ConfirmationType type
)
public function Confirm(
    type : ConfirmationType
)

参数

备注

使用 Confirm 可使最终用户能够确认 InkAnalyzer 已正确分析了笔画。调用 Confirm 之后,InkAnalyzer 在后期分析期间不会更改这些笔画的 ContextNode 对象。

例如,如果最终用户书写单词“to”,然后应用程序调用 Analyze,则 InkAnalyzer 将创建一个具有值“to”的 InkWord 节点。如果最终用户随后在“to”后面添加“me”作为一个整词,并且应用程序再次调用 Analyze,则 InkAnalyzer 可能创建一个具有值“tome”的 InkWord 节点。但是,如果在首次调用 Analyze 之后,应用程序使用值 NodeTypeAndProperties 对“to”的节点 InkWord 调用 Confirm,则会发生不同的行为。当最终用户添加“me”,并且应用程序再次调用 Analyze 时,“to”的节点不会更改。InkAnalyzer 将识别出“to me”对应的两个 InkWord 节点。

只能确认 InkWordInkDrawing 类型的 ContextNode 对象。如果尝试对非叶节点调用 Confirm,则会引发 InvalidOperationException

如果调用 InkAnalyzer.RemoveStroke,而要移除的笔画与已确认的 ContextNode 对象相关,则 ContextNode 对象将自动设置为未确认。

如果 ContextNode 对象已确认,则 SetStrokesInkAnalyzer.SetStrokesTypeInkAnalyzer.SetStrokeType 将引发 InvalidOperationException。如果源节点或目标节点已确认,则 ReparentStrokes 会引发异常。

示例

下面的示例是 Panel (theNotesPanel) 上的 Control.MouseUp 事件的事件处理程序,该处理程序通过 InkCollector (theInkCollector) 收集墨迹。该应用程序有一个由 MenuItem (confirmMenuItem) 设置的 Boolean (confirmMode)。在“确认”模式下,用户单击一个词进行确认(如果该节点已确认,则关闭确认)。该示例将鼠标释放事件转换为墨迹坐标,使用 HitTestFindNodesOfType 查找相应的节点。在找到节点之后,调用 Confirm 以切换确认。最后,应用程序脱离“确认”模式。

Private Sub theNotesPanel_MouseUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles theNotesPanel.MouseUp
    If Me.confirmMode = True Then
        ' Translate coordinates into ink dimensions
        Dim hitPoint As New Point(e.X, e.Y)
        Dim panelGraphics As Graphics = Me.theNotesPanel.CreateGraphics()
        Me.theInkCollector.Renderer.PixelToInkSpace(panelGraphics, hitPoint)
        panelGraphics.Dispose()

        ' Find the strokes that the user selected
        Dim selectedStrokes As Strokes = Me.theInkCollector.Ink.HitTest(hitPoint, 10)

        ' Find the ink word nodes that correspond to those strokes
        Dim selectedNodes As ContextNodeCollection = _
            Me.theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.InkWord, _
            selectedStrokes)

        ' Toggle the confirmation type on these nodes
        Dim selectedNode As ContextNode
        For Each selectedNode In selectedNodes
            If selectedNode.IsConfirmed(ConfirmationType.NodeTypeAndProperties) = True Then
                selectedNode.Confirm(Microsoft.Ink.ConfirmationType.None)
            Else
                selectedNode.Confirm(Microsoft.Ink.ConfirmationType.NodeTypeAndProperties)
            End If
        Next selectedNode

        ' No longer in "confirm" mode
        Me.confirmMode = False
        Me.ConfirmMenuItem.Checked = False
        Me.theInkCollector.Enabled = True
    End If

End Sub
private void theNotesPanel_MouseUp(object sender, MouseEventArgs e)
{
    if (this.confirmMode)
    {
        // Translate coordinates into ink dimensions
        Point hitPoint = new Point(e.X, e.Y);
        Graphics panelGraphics = this.theNotesPanel.CreateGraphics();
        this.theInkCollector.Renderer.PixelToInkSpace(panelGraphics, ref hitPoint);
        panelGraphics.Dispose();

        // Find the strokes that the user selected
        Strokes selectedStrokes = this.theInkCollector.Ink.HitTest(hitPoint, 10);

        // Find the ink word nodes that correspond to those strokes
        ContextNodeCollection selectedNodes =
            this.theInkAnalyzer.FindNodesOfType(Microsoft.Ink.ContextNodeType.InkWord,
            selectedStrokes);

        // Toggle the confirmation type on these nodes
        foreach (ContextNode selectedNode in selectedNodes)
        {
            if (selectedNode.IsConfirmed(ConfirmationType.NodeTypeAndProperties))
            {
                selectedNode.Confirm(Microsoft.Ink.ConfirmationType.None);
            }
            else
            {
                selectedNode.Confirm(Microsoft.Ink.ConfirmationType.NodeTypeAndProperties);
            }
        }

        // No longer in "confirm" mode
        this.confirmMode = false;
        this.confirmMenuItem.Checked = false;
        this.theInkCollector.Enabled = true;
    }

}

平台

Windows Vista

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

版本信息

.NET Framework

受以下版本支持:3.0

另请参见

参考

ContextNode 类

ContextNode 成员

Microsoft.Ink 命名空间