private void OnMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var secondPoint = e.GetPosition(Plotter.CentralGrid); if (secondPoint != firstPoint) { var transform = Plotter.Transform; Selector.SelectedRectangle = new DataRect(firstPoint.ScreenToViewport(transform), secondPoint.ScreenToViewport(transform)); e.Handled = true; } mousePressed = false; }
protected override void OnMouseWheel(MouseWheelEventArgs e) { Point mousePos = e.GetPosition(this); int delta = -e.Delta; Point zoomTo = mousePos.ScreenToViewport(Transform); double zoomSpeed = Math.Abs(delta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (delta < 0) { zoomSpeed = 1 / zoomSpeed; } Rect visible = Plotter2D.Viewport.Visible.Zoom(zoomTo, zoomSpeed); Rect oldVisible = Plotter2D.Viewport.Visible; if (orientation == Orientation.Horizontal) { visible.Y = oldVisible.Y; visible.Height = oldVisible.Height; } else { visible.X = oldVisible.X; visible.Width = oldVisible.Width; } Plotter2D.Viewport.Visible = visible; e.Handled = true; }
private void OnMouseWheel(object sender, MouseWheelEventArgs e) { Point mousePos = e.GetPosition(listeningPanel); UpdateActivePlotter(e); int delta = -e.Delta; Point zoomTo = mousePos.ScreenToViewport(activePlotter.Transform); double zoomSpeed = Math.Abs(delta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (delta < 0) { zoomSpeed = 1 / zoomSpeed; } DataRect visible = activePlotter.Viewport.Visible.Zoom(zoomTo, zoomSpeed); DataRect oldVisible = activePlotter.Viewport.Visible; if (Placement.IsHorizontal()) { visible.YMin = oldVisible.YMin; visible.Height = oldVisible.Height; } else { visible.XMin = oldVisible.XMin; visible.Width = oldVisible.Width; } activePlotter.Viewport.Visible = visible; e.Handled = true; }
private void MouseWheelZoom(Point mousePos, double wheelRotationDelta) { Point zoomTo = mousePos.ScreenToViewport(Viewport.Transform); double zoomSpeed = Math.Abs(wheelRotationDelta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (wheelRotationDelta < 0) { zoomSpeed = 1 / zoomSpeed; } if (Viewport.LockZoomX && Viewport.LockZoomY) { return; } else if (Viewport.LockZoomX) { Viewport.Visible = Viewport.Visible.ZoomY(zoomTo, zoomSpeed); } else if (Viewport.LockZoomY) { Viewport.Visible = Viewport.Visible.ZoomX(zoomTo, zoomSpeed); } else { Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed); } }
private void OnMouseMove(object sender, MouseEventArgs e) { if (lmbPressed) { Point screenMousePos = e.GetPosition(listeningPanel); Point dataMousePos = screenMousePos.ScreenToViewport(activePlotter.Transform); DataRect visible = activePlotter.Viewport.Visible; double delta; if (Placement.IsHorizontal()) { delta = (dataMousePos - dragStart).X; visible.XMin -= delta; } else { delta = (dataMousePos - dragStart).Y; visible.YMin -= delta; } if (screenMousePos != lmbInitialPosition) { listeningPanel.Cursor = Placement.IsHorizontal() ? Cursors.ScrollWE : Cursors.ScrollNS; } activePlotter.Viewport.Visible = visible; e.Handled = true; } }
void selectorNavigation_MouseLeftButtonClick(object sender, MouseButtonEventArgs e) { Point screenPos = e.GetPosition(this); Point viewportPos = screenPos.ScreenToViewport(Transform); marker.Position = viewportPos; e.Handled = true; }
private void UpdateLittleVisible(Point pos) { Size littleSize = new Size(Plotter2D.Viewport.Visible.Width / zoomCoeff * ActualWidth / Plotter2D.Viewport.Output.Width, Plotter2D.Viewport.Visible.Height / zoomCoeff * ActualHeight / Plotter2D.Viewport.Output.Height); Rect littleVisible = RectExtensions.FromCenterSize(pos.ScreenToViewport(Plotter2D.Viewport.Transform), littleSize); littlePlotter.Viewport.Visible = littleVisible; }
private void paletteControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Point screenPos = e.GetPosition(this); Point viewportPos = screenPos.ScreenToViewport(Transform); Marker.Position = viewportPos; e.Handled = true; }
protected virtual void StartPanning(MouseButtonEventArgs e) { panningStartPointInScreen = e.GetPosition(this); panningStartPointInViewport = panningStartPointInScreen.ScreenToViewport(Viewport.Transform); Plotter2D.UndoProvider.CaptureOldValue(Viewport, Viewport2D.VisibleProperty, Viewport.Visible); isPanning = true; CaptureMouse(); }
private void paletteControl_MouseMove(object sender, MouseEventArgs e) { if (e.LeftButton == MouseButtonState.Pressed) { Point screenPos = e.GetPosition(this); Point viewportPos = screenPos.ScreenToViewport(Transform); Marker.Position = viewportPos; e.Handled = true; } }
private void CentralGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { Point screenPos = e.GetPosition(this); if (screenPos == lmbPosition) { Point viewportPos = screenPos.ScreenToViewport(Transform); marker.Position = viewportPos; e.Handled = true; } }
private void MouseWheelZoom(Point mousePos, int wheelRotationDelta) { Point zoomTo = mousePos.ScreenToViewport(Viewport.Transform); double zoomSpeed = Math.Abs(wheelRotationDelta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (wheelRotationDelta < 0) { zoomSpeed = 1 / zoomSpeed; } Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed); }
protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e) { base.OnMouseLeftButtonDown(e); lmbInitialPosition = e.GetPosition(this); dragStart = lmbInitialPosition.ScreenToViewport(Transform); lmbPressed = true; content.Background = fillBrush; CaptureMouse(); }
private void UpdateUIRepresentation() { if (Plotter == null) { return; } PointsGraphBase source = this.PointSource; if (source == null || (source != null && source.VisiblePoints == null)) { SetValue(MarkerPositionPropertyKey, new Point(Double.NaN, Double.NaN)); marker.Visibility = Visibility.Hidden; return; } else { Point mousePos = Mouse.GetPosition(Plotter.CentralGrid); var transform = Plotter.Transform; Point viewportPos = mousePos.ScreenToViewport(transform); double x = viewportPos.X; searchResult = searcher.SearchXBetween(x, searchResult); SetValue(ClosestPointIndexPropertyKey, searchResult.Index); if (!searchResult.IsEmpty) { marker.Visibility = Visibility.Visible; IList <Point> points = source.VisiblePoints; Point ptBefore = points[searchResult.Index]; Point ptAfter = points[searchResult.Index + 1]; double ratio = (x - ptBefore.X) / (ptAfter.X - ptBefore.X); double y = ptBefore.Y + (ptAfter.Y - ptBefore.Y) * ratio; Point temp = new Point(x, y); SetX(marker, temp.X); SetY(marker, temp.Y); Point markerPosition = temp; followDataContext.Position = markerPosition; SetValue(MarkerPositionPropertyKey, markerPosition); } else { SetValue(MarkerPositionPropertyKey, new Point(Double.NaN, Double.NaN)); marker.Visibility = Visibility.Hidden; } } }
private void MouseWheelZoom(Point mousePos, double wheelRotationDelta) { Point zoomTo = mousePos.ScreenToViewport(Viewport.Transform); double zoomSpeed = Math.Abs(wheelRotationDelta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (wheelRotationDelta < 0) { zoomSpeed = 1 / zoomSpeed; } //Viewport.Visible = Viewport.Visible.Zoom(zoomTo, zoomSpeed); Viewport.Visible = CoordinateUtilities.RectZoomX(Viewport.Visible, zoomTo, zoomSpeed); }
private void OnMouseWheel(object sender, MouseWheelEventArgs e) { Point mousePos = e.GetPosition(listeningPanel); Rect listeningPanelBounds = new Rect(listeningPanel.RenderSize); if (!listeningPanelBounds.Contains(mousePos)) { return; } var foundActivePlotter = UpdateActivePlotter(e); if (!foundActivePlotter) { return; } int delta = -e.Delta; Point zoomTo = mousePos.ScreenToViewport(activePlotter.Transform); double zoomSpeed = Math.Abs(delta / Mouse.MouseWheelDeltaForOneLine); zoomSpeed *= wheelZoomSpeed; if (delta < 0) { zoomSpeed = 1 / zoomSpeed; } DataRect visible = activePlotter.Viewport.Visible.Zoom(zoomTo, zoomSpeed); DataRect oldVisible = activePlotter.Viewport.Visible; if (Placement.IsBottomOrTop()) { visible.YMin = oldVisible.YMin; visible.Height = oldVisible.Height; } else { visible.XMin = oldVisible.XMin; visible.Width = oldVisible.Width; } activePlotter.Viewport.SetChangeType(Placement.GetZoomChangeType()); activePlotter.Viewport.Visible = visible; activePlotter.Viewport.SetChangeType(ChangeType.None); e.Handled = true; }
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { lmbInitialPosition = e.GetPosition(listeningPanel); var foundActivePlotter = UpdateActivePlotter(e); if (foundActivePlotter) { dragStart = lmbInitialPosition.ScreenToViewport(activePlotter.Transform); listeningPanel.Background = fillBrush; listeningPanel.CaptureMouse(); e.Handled = true; } }
private void OnMouseMove(object sender, MouseEventArgs e) { lastMousePoint = e.GetPosition(this); if (!isPanning && !isZooming) { return; } // dragging if (isPanning && e.LeftButton == MouseButtonState.Pressed) { if (!IsMouseCaptured) { CaptureMouse(); } Point endPoint = lastMousePoint.ScreenToViewport(Viewport.Transform); Point loc = Viewport.Visible.Location; Vector shift = panningStartPointInViewport - endPoint; loc += shift; // preventing unnecessary changes, if actually visible hasn't change. if (shift.X != 0 || shift.Y != 0) { Cursor = Cursors.ScrollAll; DataRect visible = Viewport.Visible; visible.Location = loc; Viewport.Visible = visible; } e.Handled = true; } // zooming else if (isZooming && e.LeftButton == MouseButtonState.Pressed) { Point zoomEndPoint = lastMousePoint; UpdateZoomRect(zoomEndPoint); e.Handled = true; } }
protected virtual void StartPanning(MouseButtonEventArgs e) { panningStartPointInScreen = e.GetPosition(this); panningStartPointInViewport = panningStartPointInScreen.ScreenToViewport(Viewport.Transform); Plotter2D.UndoProvider.CaptureOldValue(Viewport, Viewport2D.VisibleProperty, Viewport.Visible); isPanning = true; // not capturing mouse because this made some tools like PointSelector not // receive MouseUp events on markers; // Mouse will be captured later, in the first MouseMove handler call. // CaptureMouse(); Viewport.PanningState = Viewport2DPanningState.Panning; //e.Handled = true; }
void CentralGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (isCtrlPressed) { Plotter.MainCanvas.Children.Remove(zoomingRect); Point currPosution = e.GetPosition(Plotter.CentralGrid); Point p1 = zoomingRectStartPointInScreen.ScreenToViewport(Viewport.Transform); Point p2 = new Point(); if (currPosution.X < zoomingRectStartPointInScreen.X) { p2.X = zoomingRectStartPointInScreen.X - zoomingRect.Width; } else { p2.X = currPosution.X; } if (currPosution.Y < zoomingRectStartPointInScreen.Y) { p2.Y = zoomingRectStartPointInScreen.Y - zoomingRect.Height; } else { p2.Y = currPosution.Y; } p2 = p2.ScreenToViewport(Viewport.Transform); Rect newVisible = new Rect(p1, p2); Viewport.Visible = newVisible; } else if (isPanning) { //Point panningEndPointInScreen; //panningEndPointInScreen = e.GetPosition(Plotter.CentralGrid); //panningEndPointInViewport = panningEndPointInScreen.ScreenToViewport(Viewport.Transform); //relocateVisisble(); isPanning = false; Plotter.CentralGrid.ReleaseMouseCapture(); } }
void CentralGrid_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { if (isCtrlPressed) { Plotter.MainCanvas.Children.Remove(zoomingRect); Point currPosution = e.GetPosition(Plotter.CentralGrid); Point p1 = zoomingRectStartPointInScreen.ScreenToViewport(Viewport.Transform); Point p2 = new Point(); if (currPosution.X < zoomingRectStartPointInScreen.X) p2.X = zoomingRectStartPointInScreen.X - zoomingRect.Width; else p2.X = currPosution.X; if (currPosution.Y < zoomingRectStartPointInScreen.Y) p2.Y = zoomingRectStartPointInScreen.Y - zoomingRect.Height; else p2.Y = currPosution.Y; p2 = p2.ScreenToViewport(Viewport.Transform); Rect newVisible = new Rect(p1, p2); Viewport.Visible = newVisible; } else if (isPanning) { //Point panningEndPointInScreen; //panningEndPointInScreen = e.GetPosition(Plotter.CentralGrid); //panningEndPointInViewport = panningEndPointInScreen.ScreenToViewport(Viewport.Transform); //relocateVisisble(); isPanning = false; } }
protected virtual void OnMouseLeftButtonDown(MouseButtonEventArgs e) { lmbInitialPosition = e.GetPosition(listeningPanel); var foundActivePlotter = UpdateActivePlotter(e); if (foundActivePlotter) { lmbPressed = true; dragStartInViewport = lmbInitialPosition.ScreenToViewport(activePlotter.Transform); listeningPanel.Background = fillBrush; listeningPanel.CaptureMouse(); e.Handled = true; } }
private void OnMouseMove(object sender, MouseEventArgs e) { if (lmbPressed) { // panning: if (e.LeftButton == MouseButtonState.Released) { lmbPressed = false; RevertChanges(); return; } Point screenMousePos = e.GetPosition(listeningPanel); Point dataMousePos = screenMousePos.ScreenToViewport(activePlotter.Transform); DataRect visible = activePlotter.Viewport.Visible; double delta; if (Placement.IsBottomOrTop()) { delta = (dataMousePos - dragStartInViewport).X; visible.XMin -= delta; } else { delta = (dataMousePos - dragStartInViewport).Y; visible.YMin -= delta; } if (screenMousePos != lmbInitialPosition) { listeningPanel.Cursor = Placement.IsBottomOrTop() ? Cursors.ScrollWE : Cursors.ScrollNS; } activePlotter.Viewport.SetChangeType(Placement.GetPanChangeType()); activePlotter.Viewport.Visible = visible; activePlotter.Viewport.SetChangeType(); e.Handled = true; } else if (rmbPressed) { // one direction zooming: if (e.RightButton == MouseButtonState.Released) { rmbPressed = false; RevertChanges(); return; } Point screenMousePos = e.GetPosition(listeningPanel); DataRect visible = activePlotter.Viewport.Visible; double delta; bool isHorizontal = Placement.IsBottomOrTop(); if (isHorizontal) { delta = (screenMousePos - rmbInitialPosition).X; } else { delta = (screenMousePos - rmbInitialPosition).Y; } if (delta < 0) { delta = 1 / Math.Exp(-delta / RmbZoomScale); } else { delta = Math.Exp(delta / RmbZoomScale); } Point center = dragStartInViewport; if (isHorizontal) { visible = rmbDragStartRect.ZoomX(center, delta); } else { visible = rmbDragStartRect.ZoomY(center, delta); } if (screenMousePos != lmbInitialPosition) { listeningPanel.Cursor = Placement.IsBottomOrTop() ? Cursors.ScrollWE : Cursors.ScrollNS; } activePlotter.Viewport.SetChangeType(Placement.GetZoomChangeType()); activePlotter.Viewport.Visible = visible; activePlotter.Viewport.SetChangeType(); //e.Handled = true; } }