Beispiel #1
0
 protected virtual void OnMouseDown(object sender, MouseEventArgs e)
 {
     Mouse.Capture(EventSource, CaptureMode.Element);
     _previousPosition2D = e.GetPosition(EventSource);
     _previousPosition3D = ProjectToTrackball(
         EventSource.ActualWidth,
         EventSource.ActualHeight,
         _previousPosition2D);
 }
Beispiel #2
0
        protected virtual void OnMouseMove(object sender, MouseEventArgs e)
        {
            Point currentPosition = e.GetPosition(EventSource);
            bool  ctrlOrShift     = Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl) ||
                                    Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.LeftShift);

            // Prefer tracking to zooming if both buttons are pressed.
            if (e.LeftButton == MouseButtonState.Pressed && !ctrlOrShift)
            {
                if (_mouseLeftDown)
                {
                    Track(currentPosition);
                }
                else
                {
                    _mouseLeftDown = true;
                    Mouse.Capture(EventSource, CaptureMode.Element);
                    _previousPosition2D = e.GetPosition(EventSource);
                    _previousPosition3D = ProjectToTrackball(
                        EventSource.ActualWidth,
                        EventSource.ActualHeight,
                        _previousPosition2D);
                }
            }
            else if (e.RightButton == MouseButtonState.Pressed || (e.LeftButton == MouseButtonState.Pressed && ctrlOrShift))
            {
                if (_mouseRightDown)
                {
                    //if (Zoom(currentPosition)) e.Handled = true;
                    Translate(currentPosition);
                }
                else
                {
                    _mouseRightDown = true;
                    Mouse.Capture(EventSource, CaptureMode.Element);
                    _previousPosition2D = e.GetPosition(EventSource);
                    _previousPosition3D = ProjectToTrackball(
                        EventSource.ActualWidth,
                        EventSource.ActualHeight,
                        _previousPosition2D);
                }
            }
            else
            {
                _mouseLeftDown  = false;
                _mouseRightDown = false;
            }

            _previousPosition2D = currentPosition;
        }
Beispiel #3
0
 protected virtual void OnMouseUp(object sender, MouseEventArgs e)
 {
     Mouse.Capture(EventSource, CaptureMode.None);
 }