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 値のいずれか。
解説
メモ : |
---|
InkPicture コントロールは、インクの収集中に CollectionMode プロパティを変更しようとすると、エラーを生成します。この競合を避けるには、CollectionMode プロパティを変更する前に CollectingInk プロパティをチェックします。 |
使用可能なモデルの一覧については、CollectionMode 列挙体を参照してください。ただし、Tablet PC SDK がインストールされていても、認識エンジンがインストールされていないシステム上で CollectionMode プロパティを使用する場合、モードを GestureOnly または InkAndGesture に設定することはできません。
CollectionMode の値それぞれに対して次の動作が発生します。
InkOnly モード
インクのみが収集され、ジェスチャは収集されません。
Gesture イベント対象は false に設定されます (他のイベント対象はすべてそのまま維持されます)。
GestureOnly モード
ジェスチャのみが収集され、インクは収集されません。ストロークは、ジェスチャ認識エンジンに送信された後に削除されます。
Gesture イベント対象は true に設定されます (他のイベント対象はすべてそのまま維持されます)。
InkPicture コントロールでは、CursorDown、Stroke、NewPackets、および NewInAirPackets イベントなど、ストロークとパケットに関連するイベントは発生しません。
カーソル イベントが発生します。
InkAndGesture モード
インクとジェスチャの両方が収集されます。
単一のストローク ジェスチャのみが認識されます。
Gesture イベント対象は true に設定されます (他のイベント対象はすべてそのまま維持されます)。
Gesture イベントが最初に発生し、InkPicture コントロールの OnGesture イベント ハンドラが呼び出された場合に、ジェスチャを受け入れるかまたはキャンセルできます。ジェスチャをキャンセルするには、継承された、InkCollectorGestureEventArgs オブジェクトの Cancel プロパティを true に設定します。ジェスチャをキャンセルすると InkPicture コントロールは強制的にインクを収集します。
収集モードの変更により、個々のジェスチャの状態が変更されることはありません。
CollectionMode プロパティが InkAndGesture に設定され、既知のジェスチャにおける InkPicture コントロールの対象が (SetGestureStatus メソッドを呼び出すことにより) 設定されている場合、望ましくない動作が発生することがあります。既知のジェスチャに似たインクを描画し、既知のジェスチャが認識エンジンの代替リスト内にある場合、Gesture イベントが発生し、ジェスチャが最上位代替候補にない場合でも、インクが消えます。ジェスチャの代わりにインクを収集する場合に、インクが消えないようにするには、ジェスチャの収集をキャンセルし、継承された、InkCollectorGestureEventArgs オブジェクトの Cancel プロパティを true に設定します。
CollectionMode プロパティが GestureOnly に設定されている場合、ユーザーがジェスチャを追加してから Gesture イベントが発生するまでのタイムアウトは固定値です。この値はプログラムによって変更できません。ジェスチャ認識は、InkAndGesture モードではより速くなります。ジェスチャのみを収集し InkAndGesture モードでインクの収集を回避する方法を次に示します。
[CollectionMode] プロパティを InkAndGesture に設定します。
Stroke イベントで、ストロークを削除します。
Gesture イベントで、ジェスチャを処理します。
ジェスチャ処理中のインクのフローを回避するには、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