次の方法で共有


InkPicture.CollectionMode プロパティ

インク、ジェスチャ、またはその両方がユーザーの書き込みとして認識されるかどうかを決定する収集モードを取得または設定します。

名前空間 :  Microsoft.Ink
アセンブリ :  Microsoft.Ink (Microsoft.Ink.dll 内)

構文

'宣言
<BrowsableAttribute(True)> _
Public Property CollectionMode As CollectionMode
'使用
Dim instance As InkPicture
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 値のいずれか。

解説

ms582182.alert_note(ja-jp,VS.90).gifメモ :

InkPicture コントロールは、インクの収集中に CollectionMode プロパティを変更しようとすると、エラーを生成します。この競合を避けるには、CollectionMode プロパティを変更する前に CollectingInk プロパティをチェックします。

使用可能なモデルの一覧については、CollectionMode 列挙体を参照してください。ただし、Tablet PC SDK がインストールされていても、認識エンジンがインストールされていないシステム上で CollectionMode プロパティを使用する場合、モードを GestureOnly または InkAndGesture に設定することはできません。

CollectionMode の値それぞれに対して次の動作が発生します。

InkOnly モード

  • インクのみが収集され、ジェスチャは収集されません。

  • Gesture イベント対象は false に設定されます (他のイベント対象はすべてそのまま維持されます)。

GestureOnly モード

  • ジェスチャのみが収集され、インクは収集されません。ストロークは、ジェスチャ認識エンジンに送信された後に削除されます。

  • Gesture イベント対象は true に設定されます (他のイベント対象はすべてそのまま維持されます)。

  • InkPicture コントロールでは、CursorDownStrokeNewPackets、および NewInAirPackets イベントなど、ストロークとパケットに関連するイベントは発生しません。

  • カーソル イベントが発生します。

InkAndGesture モード

  • インクとジェスチャの両方が収集されます。

  • 単一のストローク ジェスチャのみが認識されます。

  • Gesture イベント対象は true に設定されます (他のイベント対象はすべてそのまま維持されます)。

  • Gesture イベントが最初に発生し、InkPicture コントロールの OnGesture イベント ハンドラが呼び出された場合に、ジェスチャを受け入れるかまたはキャンセルできます。ジェスチャをキャンセルするには、継承された、InkCollectorGestureEventArgs オブジェクトの Cancel プロパティを true に設定します。ジェスチャをキャンセルすると InkPicture コントロールは強制的にインクを収集します。

収集モードの変更により、個々のジェスチャの状態が変更されることはありません。

CollectionMode プロパティが InkAndGesture に設定され、既知のジェスチャにおける InkPicture コントロールの対象が (SetGestureStatus メソッドを呼び出すことにより) 設定されている場合、望ましくない動作が発生することがあります。既知のジェスチャに似たインクを描画し、既知のジェスチャが認識エンジンの代替リスト内にある場合、Gesture イベントが発生し、ジェスチャが最上位代替候補にない場合でも、インクが消えます。ジェスチャの代わりにインクを収集する場合に、インクが消えないようにするには、ジェスチャの収集をキャンセルし、継承された、InkCollectorGestureEventArgs オブジェクトの Cancel プロパティを true に設定します。

CollectionMode プロパティが GestureOnly に設定されている場合、ユーザーがジェスチャを追加してから Gesture イベントが発生するまでのタイムアウトは固定値です。この値はプログラムによって変更できません。ジェスチャ認識は、InkAndGesture モードではより速くなります。ジェスチャのみを収集し InkAndGesture モードでインクの収集を回避する方法を次に示します。

  1. [CollectionMode] プロパティを InkAndGesture に設定します。

  2. Stroke イベントで、ストロークを削除します。

  3. Gesture イベントで、ジェスチャを処理します。

  4. ジェスチャ処理中のインクのフローを回避するには、DynamicRendering を false に設定します。

この C# の例では、メイン フォーム ウィンドウのステータス バーにジェスチャ イベントの情報を表示します。生成されたジェネリック アプリケーションを開始し、メイン フォームに StatusBar コントロール、statusBar1 および InkPicture コントロール、theInkPicture と次のコードを追加します。

[C#]

//...
using Microsoft.Ink;

namespace CollectionMode_CS
{
    public class CollectionModeForm : System.Windows.Forms.Form
    {
        // ... The generated code will be here.
        //Add this code following the implementation of Main():

        private void CollectionModeForm_Load(object sender, System.EventArgs e)
        {
            // Initialize the InkPicture object.
            theInkPicture.CollectionMode = CollectionMode.InkAndGesture;
            ClearAppGestures();

            // Turn on interest in the ChevronDown application gesture.
            theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, true);
            theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, true);
            theInkPicture.Gesture += new InkCollectorGestureEventHandler(theInkPicture_Gesture);
            theInkPicture.SystemGesture +=
            new InkCollectorSystemGestureEventHandler(theInkPicture_SystemGesture);
            theInkPicture.Enabled = true;
        }

        private void theInkPicture_Gesture(object sender,
            Microsoft.Ink.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 theInkPicture_SystemGesture(object sender,
            Microsoft.Ink.InkCollectorSystemGestureEventArgs e)
        {
            SystemGesture theGesture = e.Id;
            statusBar1.Text = "System: " + theGesture.ToString() +
            " " + e.Point.ToString();
        }

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

この Microsoft® Visual Basic® .NET の例は、メイン フォーム ウィンドウの、ステータス バーにジェスチャ イベント情報を表示します。生成されたジェネリック アプリケーションを開始し、メイン フォームに StatusBar コントロール、statusBar1 および InkPicture コントロール、theInkPicture と次のコードを追加します。

Imports Microsoft.Ink

Public Class CollectionModeForm
    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, and an InkPicture control, the InkPicture.
#End Region

    Private Sub CollectionModeForm_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
        'Set the InkPicture to collect both ink and gestures.
        theInkPicture.CollectionMode = CollectionMode.InkAndGesture
        'Clear interest in all of the application gestures
        ClearAppGestures()
        'Set our interest in only two gestures.
        theInkPicture.SetGestureStatus(ApplicationGesture.ChevronDown, True)
        theInkPicture.SetGestureStatus(ApplicationGesture.ChevronUp, True)
        'Add the handlers for application and system gestures.
        AddHandler theInkPicture.Gesture, AddressOf theInkPicture_Gesture
        AddHandler theInkPicture.SystemGesture, AddressOf theInkPicture_SystemGesture
        theInkPicture.Enabled = True
    End Sub

    Private Sub theInkPicture_Gesture(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 theInkPicture_SystemGesture( _
        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 InkPicture 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
            theInkPicture.SetGestureStatus(theGesture, False)
        Next
    End Sub
End Class

プラットフォーム

Windows Vista

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

バージョン情報

.NET Framework

サポート対象 : 3.0

参照

参照

InkPicture クラス

InkPicture メンバ

Microsoft.Ink 名前空間

CollectionMode

InkPicture.Stroke

InkPicture.Gesture

InkPicture.CursorDown

InkPicture.NewPackets

InkPicture.NewInAirPackets

InkPicture.SetGestureStatus