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; }
/******************************************************************************/ #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); }
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; }