This code is more better than Mouse gesture's code by VB.NET. it's compatible with All-in-One Gestures. This version does not detect diagonal stroke.
Public Class Form1
Dim gestureStarted As Boolean
Dim strokes As String
Dim exX, exY, grid As Integer
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
gestureStarted = True
grid = 15
strokes = ""
exX = e.X
exY = e.Y
End If
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
If e.Button = Windows.Forms.MouseButtons.Right Then
gestureStarted = False
Select Case strokes
Case "DR"
End
Case "RU"
If Me.WindowState = FormWindowState.Normal Then
Me.WindowState = FormWindowState.Maximized
Else
Me.WindowState = FormWindowState.Normal
End If
End Select
End If
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If gestureStarted Then
Dim dirX, dirY, absX, absY As Integer
Dim pente As Single
Dim direction As String
'ToolStripStatusLabel1.Text = "Mouse gesture " & strokes
dirX = e.X - exX : absX = Math.Abs(dirX)
dirY = e.Y - exY : absY = Math.Abs(dirY)
If absX < grid And absY < grid Then Return
If absY <= 5 Then pente = 100 Else pente = absX / absY
If pente < 0.58 Or pente > 1.73 Then
If pente < 0.58 Then
If dirY > 0 Then direction = "D" Else direction = "U"
Else
If dirX > 0 Then direction = "R" Else direction = "L"
End If
If Not strokes.EndsWith(direction) Then strokes = strokes & direction
End If
exX = e.X : exY = e.Y
End If
End Sub
End Class