public override void Run(Window window) { _background = new Background(window); var windowSize = window.ScreenSize; _background.Color = Color.White; _background.Resize(windowSize.Width, windowSize.Height); _background.Show(); _box1 = new Rectangle(window) { Color = Color.Yellow }; _box1.Resize(400, 600); _box1.Move(160, 160); _box1.Show(); _log = new Label(window); _log.Resize(700, 1280 - 780); _log.Move(10, 770); _log.Show(); _logEntries = new List <string>(); Log("Double tap to register additional gestures. Tripple tap to unregister them."); _glayer = new GestureLayer(_box1); _glayer.Attach(_box1); _glayer.SetTapCallback(GestureLayer.GestureType.Tap, GestureLayer.GestureState.End, (info) => { Log("Tap {0},{1}", info.X, info.Y); }); _glayer.SetTapCallback(GestureLayer.GestureType.DoubleTap, GestureLayer.GestureState.End, (info) => { Log("DoubleTap {0},{1} {2}", info.X, info.Y, info.FingersCount); _glayer.SetLineCallback(GestureLayer.GestureState.End, (line) => { Log("Line {0},{1}-{2},{3}, M:{4},{5}", line.X1, line.Y1, line.X2, line.Y2, line.HorizontalMomentum, line.VerticalMomentum); }); _glayer.SetFlickCallback(GestureLayer.GestureState.End, (flick) => { Log("Flick {0},{1}-{2},{3}, M:{4},{5}", flick.X1, flick.Y1, flick.X2, flick.Y2, flick.HorizontalMomentum, flick.VerticalMomentum); }); _glayer.RotateStep = 3; _glayer.SetRotateCallback(GestureLayer.GestureState.Move, (rotate) => { Log("Rotation {0},{1} a:{2:F3} ba:{3:F3}", rotate.X, rotate.Y, rotate.Angle, rotate.BaseAngle); }); _glayer.SetZoomCallback(GestureLayer.GestureState.End, (zoom) => { Log("Zoom {0},{1} r:{2} z:{3:F3}", zoom.X, zoom.Y, zoom.Radius, zoom.Zoom); }); Log("Line, Flick, Rotate, and Zoom callbacks enabled."); }); _glayer.SetTapCallback(GestureLayer.GestureType.TripleTap, GestureLayer.GestureState.End, (info) => { Log("TrippleTap {0},{1} {2}", info.X, info.Y, info.FingersCount); _glayer.SetLineCallback(GestureLayer.GestureState.End, null); _glayer.SetFlickCallback(GestureLayer.GestureState.End, null); _glayer.SetRotateCallback(GestureLayer.GestureState.Move, null); _glayer.SetZoomCallback(GestureLayer.GestureState.End, null); Log("Cleared Line, Flick, Rotate, and Zoom callbacks."); }); // Momentum is not used, it seems that it conflicts with Rotate and Zoom }
void AddRotateGesture(EGestureType type) { _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Start, (data) => { OnGestureStarted(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Move, (data) => { OnGestureMoved(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.End, (data) => { OnGestureCompleted(type, data); }); _gestureLayer.SetRotateCallback(GestureLayer.GestureState.Abort, (data) => { OnGestureCanceled(type, data); }); }
public override void Run(Window window) { _background = new Background(window); var windowSize = window.ScreenSize; _background.Color = Color.White; _background.Resize(windowSize.Width, windowSize.Height); _background.Show(); _box1 = new Rectangle(window) { Color = Color.Yellow }; _box1.Resize(400, 600); _box1.Move(160, 160); _box1.Show(); _log = new Label(window); _log.Resize(700, 1280 - 780); _log.Move(10, 770); _log.Show(); _logEntries = new List <string>(); Log("Momentum & Roate Gesture Test."); _glayer = new GestureLayer(_box1); _glayer.Attach(_box1); _glayer.RotateStep = 3; _glayer.SetRotateCallback(GestureLayer.GestureState.Start, (rotate) => { _prevAngle = (int)rotate.BaseAngle; }); _glayer.SetRotateCallback(GestureLayer.GestureState.Move, (rotate) => { if (_box1.IsMapEnabled) { _angle += (int)rotate.Angle - _prevAngle; _prevAngle = (int)rotate.Angle; Log($"@@ Rotation XY:({rotate.X},{rotate.Y}) a:{rotate.Angle:F2} ba:{rotate.BaseAngle:F2} total:{_angle}"); ApplyTransformation(); } }); int prevX = 0, prevY = 0; _glayer.SetMomentumCallback(GestureLayer.GestureState.Start, (data) => { if (data.FingersCount == 1) { prevX = _glayer.EvasCanvas.Pointer.X; prevY = _glayer.EvasCanvas.Pointer.Y; } }); _glayer.SetMomentumCallback(GestureLayer.GestureState.Move, (data) => { if (data.FingersCount == 1) { data.X2 = _glayer.EvasCanvas.Pointer.X; data.Y2 = _glayer.EvasCanvas.Pointer.Y; _totalX += (data.X2 - prevX); _totalY += (data.Y2 - prevY); prevX = data.X2; prevY = data.Y2; Log($"@@ Momentum X:({prevX},{data.X2}), Y({prevY},{data.Y2}) = Total:({(data.X2 - prevX)}, {(data.Y2 - prevY)})"); ApplyTransformation(); } }); _glayer.SetMomentumCallback(GestureLayer.GestureState.Abort, (data) => { Log($"@@ Momentum Abort"); }); _glayer.SetMomentumCallback(GestureLayer.GestureState.End, (data) => { Log($"@@ Momentum End"); }); }