マウスジェスチャーコントロール Ver1.00


主な機能

  • マウス右ボタンを押してから離すまでの動作をイベントとして発行します。
  • ジェスチャーが無かった(マウス右Dragが無かった)場合は通常の右クリックと同じ動作をします。
  • マウスの移動距離を変更する事ができます。(10ドット〜50ドット)
  • 連続したジェスチャーを取得できます。(最大8つまで)
プロパティ MinMove 単位移動距離を入力します。(デフォルト「20(ドット)」)
Visible コントロールの動作を設定します。(デフォルト「True」)
メソッド Gesture 直前のジェスチャーを取得します。
イベント OnStart マウスジェスチャーが開始された時に発生します。
OnMove Count マウスジェスチャー中に方向が確定すると発生します。
enDirection
OnEnd objData マウスジェスチャーが終了した時に発生します。

列挙体 Direction UP 上に移動
RIGHT 右に移動
DOWN 下に移動
LEFT 左に移動


対応開発環境

Microsoft Visual Studio .NET
Microsoft Visual Studio .NET 2003



ダウンロード


ダウンロード (vector)




インストール

書庫ファイル内の「IROHA.MouseGestureControl.dll」を適当な場所に展開します。

使用方法およびサンプルプロジェクト作成

サンプルとしてWindowsアプリケーションを作成します。

  1. Windowsアプリケーションプロジェクトを開き、「IROHA.MouseGestureControl.dll」を参照に追加します。
  2. ツールボックスのカスタマイズで「IROHA.MouseGestureControl.dll」を参照してMouseGestureコントロールを追加します。
  3. MouseGestureをフォームに貼り付けます。
    また、TabControl、Button2つ、StatusBarPanelを貼り付けます。
  4. 以下のコードを実装します。
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Button1.Text = MouseGesture1.Visible.ToString
            Button2.Text = "ジェスチャー"
            MouseGesture1.MinMove = 30 ' 単位移動距離を30ドットに変更
        End Sub
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            ' マウスジェスチャーの制御を変える
            MouseGesture1.Visible = Not MouseGesture1.Visible
            Button1.Text = MouseGesture1.Visible.ToString
        End Sub
    
        Private Sub MouseGesture1_OnStart() Handles MouseGesture1.OnStart
            ' ジェスチャーが開始された
            StatusBarPanel1.Text = String.Empty
        End Sub
    
        Private Sub MouseGesture1_OnMove(ByVal Count As Integer, ByVal enDirection As IROHA.MouseGestureControl.MouseGesture.Direction) Handles MouseGesture1.OnMove
            ' ジェスチャー中
            StatusBarPanel1.Text += GetGesture(enDirection)
        End Sub
    
        Private Sub MouseGesture1_OnEnd(ByVal enDirections() As IROHA.MouseGestureControl.MouseGesture.Direction) Handles MouseGesture1.OnEnd
            ' ジェスチャーが終了した
            If (enDirections.Length = 1) Then
                If (enDirections(0) = IROHA.MouseGestureControl.MouseGesture.Direction.RIGHT) Then
                    If (TabControl1.SelectedIndex < TabControl1.TabCount - 1) Then
                        TabControl1.SelectedIndex += 1
                        StatusBarPanel1.Text = String.Empty
                    End If
                ElseIf (enDirections(0) = IROHA.MouseGestureControl.MouseGesture.Direction.LEFT) Then
                    If (TabControl1.SelectedIndex > 0) Then
                        TabControl1.SelectedIndex -= 1
                        StatusBarPanel1.Text = String.Empty
                    End If
                End If
            ElseIf (enDirections.Length = 2) Then
                If (enDirections(0) = IROHA.MouseGestureControl.MouseGesture.Direction.DOWN AndAlso _
                    enDirections(1) = IROHA.MouseGestureControl.MouseGesture.Direction.UP) Then
                    Me.Close()
                End If
            End If
        End Sub
    
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            ' 直前のジェスチャーを取得
            MsgBox(GetGestures(MouseGesture1.Gesture))
        End Sub
    
        Private Function GetGestures(ByVal enDirections() As IROHA.MouseGestureControl.MouseGesture.Direction) As String
            Dim strGesture As String = ""
            Dim intI As Integer
    
            enDirections = MouseGesture1.Gesture
            For intI = 0 To enDirections.Length - 1
                strGesture += GetGesture(enDirections(intI))
            Next
            Return strGesture
        End Function
    
        Private Function GetGesture(ByVal enDirection As IROHA.MouseGestureControl.MouseGesture.Direction) As String
            Select Case enDirection
                Case IROHA.MouseGestureControl.MouseGesture.Direction.UP
                    Return "↑"
                Case IROHA.MouseGestureControl.MouseGesture.Direction.DOWN
                    Return "↓"
                Case IROHA.MouseGestureControl.MouseGesture.Direction.RIGHT
                    Return "→"
                Case IROHA.MouseGestureControl.MouseGesture.Direction.LEFT
                    Return "←"
            End Select
            Return ""
        End Function
    
        Private Sub TabPage_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TabPage1.MouseUp, TabPage2.MouseUp, TabPage3.MouseUp
            If e.Button = MouseButtons.Right Then
                MessageBox.Show("右クリック")
            End If
        End Sub
        
    
  5. ビルドします。
サンプルの実行
  1. Windowsアプリケーションを実行します。
  2. フォーム上の任意の場所でマウスの右ボタンをクリックします。
  3. クリックしたままマウスを右方向に動かします。
    ステータスバーに「→」が表示されたらマウスの右ボタンを離します。
     ⇒タブが右に1つ移動します。
  4. 同様に右クリックしたまま左に動かします。
     ⇒タブが左に1つ移動します。
  5. 右クリックをしてすぐ離します。
     ⇒メッセージボックスが表示されます。
  6. 「True」と表示されているボタンを押します。
    表示が「False」に替わり、マウスジェスチャーが動作しなくなります。
    再度ボタンを押すと「True」となりマウスジェスチャーが動作します。
  7. 「ジェスチャー」と表示されているボタンを押します。
    直前に操作したジェスチャーが表示されます。
  8. 右クリックしたままマウスを「下、上」と動かします。
     ⇒サンプルプログラムが終了します。

注意事項

ソース公開について

マウスジェスチャーコントロールのソースファイルを有償にて公開しています。詳しくはiroha@grn.janis.or.jpまでお問い合わせ下さい。

Copyright (C) 2006 by IROHA