2014-12-24 3 views

ответ

2

Я нашел решение

private readonly Stopwatch _doubleTapStopwatch = new Stopwatch(); 
     private Point _lastTapLocation; 

     public static double GetDistanceBetweenPoints(Point p, Point q) 
     { 
      double a = p.X - q.X; 
      double b = p.Y - q.Y; 
      double distance = Math.Sqrt(a * a + b * b); 
      return distance; 
     } 
     private bool IsDoubleTap(TouchEventArgs e) 
     { 
      Point currentTapPosition = e.GetTouchPoint(this).Position; 
      bool tapsAreCloseInDistance = GetDistanceBetweenPoints(currentTapPosition, _lastTapLocation) < 40; 
      _lastTapLocation = currentTapPosition; 

      TimeSpan elapsed = _doubleTapStopwatch.Elapsed; 
      _doubleTapStopwatch.Restart(); 
      bool tapsAreCloseInTime = (elapsed != TimeSpan.Zero && elapsed < TimeSpan.FromSeconds(0.7)); 

      return tapsAreCloseInDistance && tapsAreCloseInTime; 
     } 

    private void Close_OnTouchDown(object sender, TouchEventArgs e) 
     { 

      if(IsDoubleTap(e)) 
       //Do somthing; 
     } 

Refrence Link

+0

Вместо жесткого кодирования расстояние значение, которое вы используете, чтобы проверить, насколько закрыты краны, и продолжительность между метками, вы должны использовать 'SystemInformation.DoubleClickTime' и' SystemInformation.DoubleClickSize'. Дополнительная информация доступна на [MSDN] (https://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.doubleclicktime (v = vs.110) .aspx) – Craig

Смежные вопросы