Beispiel #1
0
        private void TryAddManipulator(TouchDevice td)
        {
            if (_manipulators.ContainsKey(td.Id))
            {
                return;
            }

            var pos = td.GetPosition(_keyboardWnd);

            _manipulators.Add(td.Id, new Manipulator2D(td.Id, (float)pos.X, (float)pos.Y));

            var pivot = new ManipulationPivot2D();

            if (_manipulators.Count > 1)
            {
                pivot.X = (_manipulators.Values.First().X + _manipulators.Values.Last().X) / 2;
                pivot.Y = (_manipulators.Values.First().Y + _manipulators.Values.Last().Y) / 2;
            }
            else
            {
                pivot.X = (float)pos.X;
                pivot.Y = (float)pos.Y;
            }
            pivot.Radius         = (float)1.0;
            _zoomManipProc.Pivot = pivot;
        }
Beispiel #2
0
        /******************************************************************************/

        #region Constructor
        public ManipulationItem()
        {
            InitializeComponent();

            PivotButton.Click += OnPivotClick;

            // The DeadZone is a little red ring that shows the area inside which
            // no rotation or scaling will happen if you drag the mouse. We set
            // it to four times the size of the manipulation processor's MininumScaleRotateRadius.
            // Reason for the number:
            // - x2, because diameter = 2 * radius
            // - x2, because the number on the manipulation processor is radius from
            //   the center of mass of the manipulators being used, which in the case
            //   of this test app will be the midpoint between the mouse and the hub.
            //DeadZone.Width = 4 * minScaleRotateRadius;
            //DeadZone.Height = 4 * minScaleRotateRadius;

            manipulationProcessor = new ManipulationProcessor2D(Manipulations2D.None);
            manipulationProcessor.MinimumScaleRotateRadius = minScaleRotateRadius;
            manipulationProcessor.Started += OnManipulationStarted;

            manipulationProcessor.Started += OnManipulationStarted2;


            manipulationProcessor.Delta     += OnManipulationDelta;
            manipulationProcessor.Completed += OnManipulationCompleted;

            inertiaProcessor = new InertiaProcessor2D();
            inertiaProcessor.TranslationBehavior.DesiredDeceleration = 0.0001F;
            inertiaProcessor.RotationBehavior.DesiredDeceleration    = 1e-6F;
            inertiaProcessor.ExpansionBehavior.DesiredDeceleration   = 0.0001F;
            inertiaProcessor.Delta     += OnManipulationDelta;
            inertiaProcessor.Completed += OnInertiaCompleted;

            inertiaTimer = new DispatcherTimer(
                DispatcherPriority.Input,
                Dispatcher.CurrentDispatcher);
            inertiaTimer.IsEnabled = false;
            inertiaTimer.Interval  = TimeSpan.FromMilliseconds(25);
            inertiaTimer.Tick     += OnTimerTick;

            pivot = new ManipulationPivot2D();

            RenderTransformOrigin = new Point(0.5, 0.5);

            Radius        = 75;
            Center        = new Point(0, 0);
            IsPivotActive = true;
            Move(Radius, Radius, 0, 1);
        }
Beispiel #3
0
        private void TryAddManipulator(TouchDevice td)
        {
            if (_manipulators.ContainsKey(td.Id))
                return;

            var pos = td.GetPosition(_keyboardWnd);
            _manipulators.Add(td.Id, new Manipulator2D(td.Id, (float) pos.X, (float) pos.Y));

            var pivot = new ManipulationPivot2D();
            if (_manipulators.Count > 1)
            {
                pivot.X = (_manipulators.Values.First().X + _manipulators.Values.Last().X)/2;
                pivot.Y = (_manipulators.Values.First().Y + _manipulators.Values.Last().Y)/2;
            }
            else
            {
                pivot.X = (float) pos.X;
                pivot.Y = (float) pos.Y;
            }
            pivot.Radius = (float) 1.0;
            _zoomManipProc.Pivot = pivot;
        }