示例#1
0
        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
        }
示例#2
0
 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); });
 }
示例#3
0
        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");
            });
        }