共用方式為


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(zh-tw,VS.90).gif注意事項:

如果在正在收集筆墨時嘗試變更 CollectionMode 屬性,InkPicture 控制項就會產生錯誤。為避免此衝突,請在變更 CollectionMode 屬性之前,先檢查 CollectingInk 屬性。

如需可用模式的清單,請參閱 CollectionMode 列舉型別。然而,在已安裝 Tablet PC SDK 但未安裝辨識器的系統上使用 CollectionMode 屬性時,無法將模式設定為 GestureOnlyInkAndGesture

下列行為是因為每個 CollectionMode 值而發生:

InkOnly 模式

  • 只收集筆墨,不收集筆勢。

  • 有關聯的 Gesture 事件是設定為 false (所有其他有關聯的事件則保持原狀)。

GestureOnly 模式

  • 只收集筆勢,不收集筆墨。筆劃傳送至筆勢辨識器之後就會刪除。

  • 有關聯的 Gesture 事件是設定為 true (所有其他有關聯的事件則保持原狀)。

  • InkPicture 控制項不會引發下列筆劃和封包相關事件:CursorDownStrokeNewPacketsNewInAirPackets 事件。

  • 引發游標事件。

InkAndGesture 模式

  • 收集筆墨和筆勢。

  • 只辨識單一筆劃筆勢。

  • 有關聯的 Gesture 事件是設定為 true (所有其他有關聯的事件則保持原狀)。

  • 當叫用 InkPicture 控制項的 OnGesture 事件處理常式時,會先引發 Gesture 事件,讓您接受或取消筆勢。若要取消筆勢,請將 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