다음을 통해 공유


InkOverlay.CollectionMode 속성

업데이트: 2007년 11월

잉크, 제스처 또는 둘 모두를 사용자의 입력과 동시에 인식할지 여부를 결정하는 수집 모드를 가져오거나 설정합니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink(Microsoft.Ink.dll)

구문

‘선언
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
‘사용 방법
Dim instance As InkOverlay
Dim value As CollectionMode

value = instance.CollectionMode

instance.CollectionMode = value
[BrowsableAttribute(true)]
public CollectionMode CollectionMode { get; set; }
[BrowsableAttribute(true)]
public:
property CollectionMode CollectionMode {
    CollectionMode get ();
    void set (CollectionMode value);
}
/** @property */
/** @attribute BrowsableAttribute(true) */
public CollectionMode get_CollectionMode()
/** @property */
/** @attribute BrowsableAttribute(true) */
public  void set_CollectionMode(CollectionMode value)
public function get CollectionMode () : CollectionMode
public function set CollectionMode (value : CollectionMode)

속성 값

형식: Microsoft.Ink.CollectionMode
잉크, 제스처 또는 둘 모두를 사용자의 입력과 동시에 인식할지 여부를 결정하는 CollectionMode입니다.

설명

참고

잉크를 수집하는 동안 CollectionMode 속성을 변경하려고 하면 InkOverlay 개체에서 오류를 생성합니다. 이러한 충돌을 방지하려면 CollectionMode 속성을 변경하기 전에 CollectingInk 속성을 확인하십시오.

사용할 수 있는 모드의 목록은 CollectionMode 열거형을 참조하십시오. 그러나 Table PC SDK는 설치되어 있지만 인식기는 설치되어 있지 않은 시스템에서 CollectionMode 속성을 사용할 때는 모드를 GestureOnly 또는 InkAndGesture로 설정할 수 없습니다.

각 CollectionMode 값에 대해 다음 동작이 발생합니다.

InkOnly 모드

  • 제스처를 제외한 잉크만 수집됩니다.

  • Gesture 이벤트 관심도는 false로 설정되며 다른 모든 이벤트 관심도는 그대로 유지됩니다.

GestureOnly 모드

  • 잉크를 제외한 제스처만 수집됩니다. 제스처 인식기에 전송된 스트로크는 삭제됩니다.

  • Gesture 이벤트 관심도는 true로 설정되며 다른 모든 이벤트 관심도는 그대로 유지됩니다.

  • InkOverlay 개체는 스트로크 및 패킷과 관련한 CursorDown, Stroke, NewPacketsNewInAirPackets 이벤트를 발생시키지 않습니다.

  • 커서 이벤트가 발생합니다.

InkAndGesture 모드

  • 잉크와 제스처가 모두 수집됩니다.

  • 단일 스트로크 제스처만 인식됩니다.

  • Gesture 이벤트 관심도는 true로 설정되며 다른 모든 이벤트 관심도는 그대로 유지됩니다.

  • Gesture 이벤트가 먼저 발생하여 InkOverlay 개체의 OnGesture 이벤트 처리기가 호출될 때 제스처를 수락하거나 취소할 수 있도록 합니다. 제스처를 취소하려면 InkCollectorGestureEventArgs 개체의 상속된 Cancel 속성을 true로 설정합니다. 제스처를 취소하면 InkOverlay 개체가 잉크를 수집합니다.

수집 모드를 변경해도 개별 제스처의 상태는 변경되지 않습니다.

CollectionMode 속성이 GestureOnly로 설정되어 있고, SetGestureStatus 메서드를 호출하여 알려진 제스처에서 InkOverlay 개체의 관심도를 설정하는 경우에는 원치 않는 동작이 발생할 수 있습니다. 알려진 제스처와 비슷한 잉크를 그리는 경우 알려진 제스처가 인식기의 대체 항목 목록에 있으면 해당 제스처가 최상위 대체 항목이 아닌 경우에도 Gesture 이벤트가 발생하여 잉크가 사라집니다. 제스처가 아닌 잉크를 수집하려는 경우 잉크가 사라지지 않게 하려면 제스처 수집을 취소하고 상속된 InkCollectorGestureEventArgs 개체의 Cancel 속성을 true로 설정합니다.

CollectionMode 속성이 GestureOnly로 설정된 경우 사용자가 제스처를 추가하는 시점과 Gesture 이벤트가 발생하는 시점 사이의 제한 시간은 프로그래밍 방식으로 변경할 수 없는 고정 값입니다. InkAndGesture 모드에서 제스처가 보다 빠르게 인식됩니다. InkAndGesture 모드에서 제스처만 수집하고 잉크는 수집하지 않으려면 다음을 수행합니다.

  1. CollectionMode 속성을 InkAndGesture로 설정합니다.

  2. Stroke 이벤트에서 스트로크를 삭제합니다.

  3. Gesture 이벤트에서 제스처를 처리합니다.

  4. 제스처를 처리하는 동안 잉크의 흐름이 발생하지 않도록 하려면 DynamicRendering을 false로 설정합니다.

예제

이 C# 예제에서는 기본 폼 창의 상태 표시줄에 제스처 이벤트 정보를 표시합니다. 제네릭으로 생성된 응용 프로그램에서 시작하여 StatusBar 컨트롤인 statusBar1을 기본 폼과 다음 코드에 추가합니다.

//...
using Microsoft.Ink;

namespace CSGestureEvents
{
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.StatusBar statusBar1;
        // ... The generated code will be here.
        //Add this code following the implementation of Main():
        InkOverlay theInkOverlay;

        private void Form1_Load(object sender, System.EventArgs e)
        {
            // Initialize the InkOverlay object.
            theInkOverlay = new InkOverlay(Handle);
            theInkOverlay.CollectionMode = CollectionMode.InkAndGesture;
            ClearAppGestures(theInkOverlay);
            // Turn on interest in the ChevronDown application gesture.
            theInkOverlay.SetGestureStatus(ApplicationGesture.ChevronDown, true);
            theInkOverlay.SetGestureStatus(ApplicationGesture.ChevronUp, true);
            theInkOverlay.Gesture += new InkCollectorGestureEventHandler(Gesture_Event);
            theInkOverlay.SystemGesture += new InkCollectorSystemGestureEventHandler(SystemGesture_Event);
            theInkOverlay.Enabled = true;
        }

        private void Gesture_Event(object sender,
            InkCollectorGestureEventArgs e)
        {
            Gesture theGesture = e.Gestures[0];
            statusBar1.Text = theGesture.Id.ToString();
            // Cancelling the gesture will cause the ink to remain.
            if (theGesture.Id == ApplicationGesture.ChevronDown)
                e.Cancel = true;
        }

        private void SystemGesture_Event(object sender,
            InkCollectorSystemGestureEventArgs e)
        {
            SystemGesture theGesture = e.Id;
            statusBar1.Text = "System: " + theGesture.ToString() +
                " " + e.Point.ToString();
        }

        // Set all of the ApplicationGestures' status
        // to false on the InkOverlay object.
        private void ClearAppGestures(InkOverlay theInkOverlay)
        {
            ApplicationGesture test = ApplicationGesture.NoGesture;
            Array theGestures = System.Enum.GetValues(test.GetType());
            foreach (ApplicationGesture theGesture in theGestures)
            {
                theInkOverlay.SetGestureStatus(theGesture, false);
            }
        }
    }
}

이 Microsoft Visual Basic .NET 예제에서는 기본 폼 창의 상태 표시줄에 제스처 이벤트 정보를 표시합니다. 제네릭으로 생성된 응용 프로그램에서 시작하여 StatusBar 컨트롤인 statusBar1을 기본 폼과 다음 코드에 추가합니다.

Imports Microsoft.Ink
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
'This contains the standard generated form code, with
'the addition of a Status Bar, StatusBar1.
#End Region

    Dim theInkOverlay As InkOverlay

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Initialize InkOverlay.
        theInkOverlay = New InkOverlay(Handle)
        'Set the InkOverlay to collect both ink and gestures.
        theInkOverlay.CollectionMode = CollectionMode.InkAndGesture
        'Clear interest in all of the application gestures
        ClearAppGestures(theInkOverlay)
        'Set our interest in only two gestures.
        theInkOverlay.SetGestureStatus(ApplicationGesture.ChevronDown, True)
        theInkOverlay.SetGestureStatus(ApplicationGesture.ChevronUp, True)
        'Add the handlers for application and system gestures.
        AddHandler theInkOverlay.Gesture, AddressOf Gesture_Event
        AddHandler theInkOverlay.SystemGesture, AddressOf SystemGesture_Event
        theInkOverlay.Enabled = True
    End Sub

    Private Sub Gesture_Event(ByVal sender As Object, _
        ByVal e As InkCollectorGestureEventArgs)
        Dim theGesture As Gesture = e.Gestures(0)
        StatusBar1.Text = theGesture.Id.ToString()
        'Cancelling the gesture will cause the ink to remain.
        If theGesture.Id = ApplicationGesture.ChevronDown Then
            e.Cancel = True
        End If
     End Sub

    Private Sub SystemGesture_Event( _
        ByVal sender As Object, _
        ByVal e As InkCollectorSystemGestureEventArgs)
        StatusBar1.Text = "System: " + e.Id.ToString() + "   " + e.Point.ToString()
    End Sub

    ' Set all of the ApplicationGestures' status
    ' to false on the InkOverlay object.
    Private Sub ClearAppGestures()
        Dim test As ApplicationGesture = ApplicationGesture.NoGesture
        Dim theGestures As Array = System.Enum.GetValues(test.GetType())
        Dim theGesture As ApplicationGesture
        For Each theGesture In theGestures
            theInkOverlay.SetGestureStatus(theGesture, False)
        Next
    End Sub
End Class

플랫폼

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

InkOverlay 클래스

InkOverlay 멤버

Microsoft.Ink 네임스페이스

InkOverlay.Enabled

InkOverlay.CollectingInk

CollectionMode