「Dotspatial」でタブレット端末を使ったジェスチャーイベントに対応する

windowsのデスクトップアプリでは、Surfaceなどタブレット端末で使用するジェスチャーイベントに対応していません。

そこで、「Dotspatial」にジェスチャーイベントを追加し、タブレットでも操作できるようにしました。

以下はその時のメモです。

ジェスチャーイベントの追加は、以下マイクロソフトから提供されている
デスクトップ アプリケーション のSamples/Win7Samples/Touch/MTGesturesを参考にしました。

https://github.com/Microsoft/Windows-classic-samples

今回追加するジェスチャーイベントは以下の2種類です。

ジェスチャー名 アクション説明 アクションイメージ 対象
ZOOM 2本の指を使って、間隔を広げたり、狭めたりします。
PAN 1本または2本の指を使って、上/下または左/右にドラッグしてポイントを動かします。
ROTATE 2本の指を使って、ポイントを回転させます。 ×
TWOFINGERTAP 2本の指を使って、同時にタップします。 ×
PRESSANDTAP 1本の指で押しながら、他の指でタップします。 ×

1.GestureListenerの作成

GestureListenerクラスを作成して、.NETのcontrolクラス(今回は「Dotspatial」のMapクラス)のジェスチャーイベントの登録及び取得を行います。

ジェスチャーイベントの登録及び情報の取得は、SetGestureConfig およ び GetGestureConfig というWindows API を介して行います。

.NETのcontrolクラスが画面上のジェスチャを検出するたびに、GetGestureinfo API を呼び出すことで、どのようなジェスチャを実行しようとしているのかが特定できます。

2.GestureInfoの作成

ジェスチャーイベントの登録及び取得に使用する構造体です。 SetGestureConfig およ び GetGestureConfig という Windows API を使用時に利用します。

3.GestureEventArgsの作成

各種ジェスチャーイベント発火時に、引数として使用します。

4.Mapの改訂

上記クラスをインポートしたうえで、ジェスチャーイベントが使えるよう、Mapクラスを改訂します。

※Mapクラスは改定箇所のみ記載しています。

以下、surfaceでの画面イメージです。
初期表示時

2本指を使ったズームイン

1本指を使ったパンによる移動

Print Friendly, PDF & Email

シェアする

  • このエントリーをはてなブックマークに追加

フォローする