private void OnMouseMove(MouseMoveEventArgs ev) { if (_window.IsMouseButtonDown(MouseButton.Right)) { _graph.IsCameraAutoControlled = false; var delta = ev.Delta; delta.Y = -delta.Y; _graph.Camera.Target.Position += (delta / _window.ClientSize.Y) * _graph.Camera.Target.VerticalSize; } if (_window.IsMouseButtonDown(MouseButton.Left)) { var p = ClientToView(ev.Position); var r = new Box2(p, p); r.Inflate(_mouseDownStartPt); _graph.DragRectangle = r; } _graph.ViewportWidth = _window.ClientSize.X; _graph.ViewportHeight = _window.ClientSize.Y; _graph.MousePosition = ClientToView(ev.Position); if (_graph.TryGetMouseover(ClientToView(ev.Position), out var targetPt)) { _graph.MouseoverTarget = targetPt; } else { _graph.MouseoverTarget = default; } }
protected override void OnMouseMove(MouseEventArgs mm) { base.OnMouseMove(mm); var renSize = _control.RenderSize; var size = new Vector2((float)renSize.Width, (float)renSize.Height); var clientPosPt = mm.GetPosition(_control); var screenPt = ClientToView(clientPosPt); Graph.State.MousePosition = screenPt; var clientPos = new Vector2((float)clientPosPt.X, (float)clientPosPt.Y); if (mm.LeftButton == MouseButtonState.Pressed) { var p = screenPt; var r = new Box2(p, p); r.Inflate(_mouseDownStartPt); Graph.State.DragRectangle = r; } if (mm.RightButton == MouseButtonState.Pressed) { Graph.State.IsCameraAutoControlled = false; var delta = clientPos - _lastMouse; delta.Y = -delta.Y; var moveDelta = (delta / (float)size.Y) * Graph.State.Camera.Current.VerticalSize; Graph.State.Camera.Target.Position += moveDelta; } if (Graph.State.TryGetMouseover(screenPt, out var targetPt)) { Graph.State.MouseoverTarget = targetPt; } else { Graph.State.MouseoverTarget = null; } _lastMouse = clientPos; }