SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Silverlight/WPFで使える逆引きTips集

Silverlight/WPFで使える逆引きTips集
――インクキャンバス機能

(6) InkCanvasコントロール

ダウンロード InkCanvas_WPF_VB.zip (2.0 MB)
ダウンロード InkCanvas_WPF_CS.zip (72.0 KB)

07.ジェスチャを認識する

 InkCanvas コントロールでは、ユーザーのマウス(またはタッチ)操作を認識することができます。

 ジェスチャ(ユーザーが操作したマウスやタッチの軌跡)を認識するには、EditingMode プロパティInkAndGesture または GestureOnly を指定します。

 InkAndGesture を指定した場合は、ユーザーがマウスの左ボタンを押している間(またはタッチしている間)軌跡が描かれます。GestureOnly を指定した場合は、ユーザーがマウスの左ボタンを押している間(またはタッチしている間)のジェスチャを認識しますが軌跡は描かれません。

 ジェスチャを認識すると、Gesuture イベントが発生します。認識結果は Gesuture イベントの引数 e が持つメソッド GetGestureRecognitionResults メソッドで取得します。

 認識可能な操作の一例を下記に示します。詳しくは MSDN のApplicationGesture 列挙体を参照して下さい。

ApplicationGesutre 列挙体
メンバ名 説明
Check レ点
Circle 円(楕円)
DoubleCircle 二重円
Down 下向きのストローク
Up 上向きのストローク
Square 四角形
Star 一筆書きの星形
Triangle 三角形

 下記はユーザーのジェスチャを認識して、認識結果をメッセージボックスに表示する例です。きれいに描けるほど認識率は上がります。

ジェスチャを認識する例
ジェスチャを認識する例
XAMLの例
lt;InkCanvas Name="InkCanvas1" EditingMode="InkAndGesture" />
VBの例
'下記をインポート
Imports System.Windows.Ink
Imports System.Collections.ObjectModel

Private Sub Window_Loaded(ByVal sender As System.Object, 
    ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
    'ジェスチャモードの設定
    InkCanvas1.EditingMode = InkCanvasEditingMode.InkAndGesture
End Sub

' ジェスチャの認識
Private Sub InkCanvas1_Gesture(ByVal sender As System.Object, 
    ByVal e As System.Windows.Controls.InkCanvasGestureEventArgs) Handles InkCanvas1.Gesture
    Dim gestureResults As ReadOnlyCollection(Of GestureRecognitionResult)

    'ジェスチャの認識結果を取得
    gestureResults = e.GetGestureRecognitionResults()

    ' 認識結果の信頼性が高い場合に、メッセージを表示する
    If gestureResults(0).RecognitionConfidence = RecognitionConfidence.Strong Then
        MessageBox.Show(gestureResults(0).ApplicationGesture.ToString())
    End If
End Sub
C#の例
// 下記を追加
using System.Windows.Ink;
using System.Collections.ObjectModel;

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    // ジェスチャモードの設定
    inkCanvas1.EditingMode = InkCanvasEditingMode.InkAndGesture;
}


// ジェスチャの認識
private void inkCanvas1_Gesture(object sender, InkCanvasGestureEventArgs e)
{
    ReadOnlyCollection<gesturerecognitionresult> gestureResults;

    // ジェスチャの認識結果を取得
    gestureResults = e.GetGestureRecognitionResults();

    // 認識結果の信頼性が高い順にメッセージを表示する
    if ( gestureResults[0].RecognitionConfidence == RecognitionConfidence.Strong )
        MessageBox.Show(gestureResults[0].ApplicationGesture.ToString());
}
ポイント

 操作を認識するには EditingMode プロパティに InkAndGesture または GestureOnly を指定する。
認識結果は、Gestureイベントの引数 e が持つ GetGestureRecognitionResults メソッドで取得する。

次のページ
08.ジェスチャで認識した情報をもとに図形を描画する

この記事は参考になりましたか?

Silverlight/WPFで使える逆引きTips集連載記事一覧

もっと読む

この記事の著者

HIRO(ヒロ)

HIRO's.NETのHIROです。とある半導体工場のSEです。VB.NET, C#, PowerShellによるプログラミングを楽しんでいます。最近はBlog でPowerShellについて書いています。2008/07/07にPowerShell from Japan!!というサイトを立ち上げまし...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/5666 2011/01/13 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー