protected virtual void OnMouseDown(object sender, MouseEventArgs e) { Mouse.Capture(EventSource, CaptureMode.Element); _previousPosition2D = e.GetPosition(EventSource); _previousPosition3D = ProjectToTrackball( EventSource.ActualWidth, EventSource.ActualHeight, _previousPosition2D); }
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; }
protected virtual void OnMouseUp(object sender, MouseEventArgs e) { Mouse.Capture(EventSource, CaptureMode.None); }