void XamlCanvas_MouseDown(object sender, MouseButtonEventArgs e) { var spt = e.GetPosition((FrameworkElement)Parent); var pt = e.GetPosition(this); var t = new CanvasTouch { Handle = MouseId, CanvasLocation = new PointF((float)pt.X, (float)pt.Y), SuperCanvasLocation = new PointF((float)spt.X, (float)spt.Y), Time = DateTime.UtcNow, }; t.PreviousTime = t.Time; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; _activeTouches[t.Handle] = t; if (Content != null) { Content.TouchesBegan(new[] { t }, CanvasKeys.None); } }
void XamlCanvas_TouchDown(object sender, TouchEventArgs e) { var spt = e.GetTouchPoint((FrameworkElement)Parent); var pt = e.GetTouchPoint(this); var t = new CanvasTouch { Handle = new IntPtr(e.TouchDevice.Id), CanvasLocation = new PointF((float)pt.Position.X, (float)pt.Position.Y), SuperCanvasLocation = new PointF((float)spt.Position.X, (float)spt.Position.Y), Time = DateTime.UtcNow, }; t.PreviousTime = t.Time; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; _activeTouches[t.Handle] = t; if (Content != null) { Content.TouchesBegan(new[] { t }, CanvasKeys.None); } }
void XamlCanvas_TouchDown(object sender, TouchEventArgs e) { var spt = e.GetTouchPoint ((FrameworkElement)Parent); var pt = e.GetTouchPoint (this); var t = new CanvasTouch { Handle = new IntPtr (e.TouchDevice.Id), CanvasLocation = new PointF ((float)pt.Position.X, (float)pt.Position.Y), SuperCanvasLocation = new PointF ((float)spt.Position.X, (float)spt.Position.Y), Time = DateTime.UtcNow, }; t.PreviousTime = t.Time; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; _activeTouches[t.Handle] = t; if (Content != null) { Content.TouchesBegan (new[] { t }, CanvasKeys.None); } }
void XamlCanvas_MouseDown(object sender, MouseButtonEventArgs e) { var spt = e.GetPosition ((FrameworkElement)Parent); var pt = e.GetPosition (this); var t = new CanvasTouch { Handle = MouseId, CanvasLocation = new PointF ((float)pt.X, (float)pt.Y), SuperCanvasLocation = new PointF ((float)spt.X, (float)spt.Y), Time = DateTime.UtcNow, }; t.PreviousTime = t.Time; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; _activeTouches[t.Handle] = t; if (Content != null) { Content.TouchesBegan (new[] { t }, CanvasKeys.None); } }
void HandleTouchFrameReported(object sender, TouchFrameEventArgs e) { try { var pts = e.GetTouchPoints(this); var spts = e.GetTouchPoints((UIElement)Parent); var began = new List<CanvasTouch>(); var ended = new List<CanvasTouch>(); var moved = new List<CanvasTouch>(); for (var i = 0; i < pts.Count; i++) { var p = pts[i]; var handle = new IntPtr(p.TouchDevice.Id + 1); var now = DateTime.UtcNow; if (p.Action == TouchAction.Down) { var pos = p.Position.ToPointF(); // // Look for double taps // var tapCount = 1; if (_lastDownTime.ContainsKey(handle) && _lastBeganPosition.ContainsKey(handle)) { var dt = now - _lastDownTime[handle]; if (dt.TotalSeconds < 0.5 && pos.DistanceTo(_lastBeganPosition[handle]) < DoubleClickMinDistance) { tapCount++; } } // // TouchBegan // var t = new CanvasTouch { Handle = handle, TapCount = tapCount, CanvasLocation = pos, CanvasPreviousLocation = pos, SuperCanvasLocation = spts[i].Position.ToPointF(), SuperCanvasPreviousLocation = spts[i].Position.ToPointF(), PreviousTime = now, Time = now, }; _activeTouches[t.Handle] = t; _lastDownTime[t.Handle] = now; _lastBeganPosition[t.Handle] = pos; began.Add(t); } else if (_activeTouches.ContainsKey(handle)) { var t = _activeTouches[handle]; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; t.PreviousTime = t.Time; t.CanvasLocation = p.Position.ToPointF(); t.SuperCanvasLocation = spts[i].Position.ToPointF(); t.Time = now; if (p.Action == TouchAction.Move) { moved.Add(t); } else { ended.Add(t); } } } var del = Content; if (del != null && _touchEnabled) { if (began.Count > 0) { var keys = CanvasKeys.None; //if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl)) { // keys = keys | CanvasKeys.Command; //} //if (Keyboard.IsKeyDown (Key.LeftShift) || Keyboard.IsKeyDown (Key.RightShift)) { // keys = keys | CanvasKeys.Shift; //} del.TouchesBegan(began.ToArray(), keys); } if (moved.Count > 0) { del.TouchesMoved(moved.ToArray()); } if (ended.Count > 0) { del.TouchesEnded(ended.ToArray()); } } } catch (Exception err) { System.Diagnostics.Debug.WriteLine(err); } }
public void TouchesBegan(CanvasTouch[] touches) { var touch = touches.First (); if (Frame.Contains (touch.CanvasLocation)) { istate = InteractionState.Pressed; } }
public virtual bool TouchesMoved(CanvasTouch[] touches) { return false; }
public virtual void TouchesEnded(CanvasTouch[] touches) { }
public virtual void TouchesCancelled(CanvasTouch[] touches) { }
public virtual void TouchesBegan(CanvasTouch[] touches) { }
public void TouchesEnded(CanvasTouch[] touches) { if (istate == InteractionState.Pressed) { istate = InteractionState.None; var c = Click; if (c != null) { c (this, EventArgs.Empty); } } }
public virtual void TouchesBegan(CanvasTouch[] touches, CanvasKeys keys) { }
void HandleTouchFrameReported(object sender, TouchFrameEventArgs e) { try { var pts = e.GetTouchPoints(this); var spts = e.GetTouchPoints((UIElement)Parent); var began = new List <CanvasTouch>(); var ended = new List <CanvasTouch>(); var moved = new List <CanvasTouch>(); for (var i = 0; i < pts.Count; i++) { var p = pts[i]; var handle = new IntPtr(p.TouchDevice.Id + 1); var now = DateTime.UtcNow; if (p.Action == TouchAction.Down) { var pos = p.Position.ToPointF(); // // Look for double taps // var tapCount = 1; if (_lastDownTime.ContainsKey(handle) && _lastBeganPosition.ContainsKey(handle)) { var dt = now - _lastDownTime[handle]; if (dt.TotalSeconds < 0.5 && pos.DistanceTo(_lastBeganPosition[handle]) < DoubleClickMinDistance) { tapCount++; } } // // TouchBegan // var t = new CanvasTouch { Handle = handle, TapCount = tapCount, CanvasLocation = pos, CanvasPreviousLocation = pos, SuperCanvasLocation = spts[i].Position.ToPointF(), SuperCanvasPreviousLocation = spts[i].Position.ToPointF(), PreviousTime = now, Time = now, }; _activeTouches[t.Handle] = t; _lastDownTime[t.Handle] = now; _lastBeganPosition[t.Handle] = pos; began.Add(t); } else if (_activeTouches.ContainsKey(handle)) { var t = _activeTouches[handle]; t.CanvasPreviousLocation = t.CanvasLocation; t.SuperCanvasPreviousLocation = t.SuperCanvasLocation; t.PreviousTime = t.Time; t.CanvasLocation = p.Position.ToPointF(); t.SuperCanvasLocation = spts[i].Position.ToPointF(); t.Time = now; if (p.Action == TouchAction.Move) { moved.Add(t); } else { ended.Add(t); } } } var del = Content; if (del != null && _touchEnabled) { if (began.Count > 0) { var keys = CanvasKeys.None; //if (Keyboard.IsKeyDown (Key.LeftCtrl) || Keyboard.IsKeyDown (Key.RightCtrl)) { // keys = keys | CanvasKeys.Command; //} //if (Keyboard.IsKeyDown (Key.LeftShift) || Keyboard.IsKeyDown (Key.RightShift)) { // keys = keys | CanvasKeys.Shift; //} del.TouchesBegan(began.ToArray(), keys); } if (moved.Count > 0) { del.TouchesMoved(moved.ToArray()); } if (ended.Count > 0) { del.TouchesEnded(ended.ToArray()); } } } catch (Exception err) { System.Diagnostics.Debug.WriteLine(err); } }