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;
        }
示例#2
0
		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;
		}
示例#3
0
        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;
        }
示例#4
0
        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);
            }
        }
示例#5
0
        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;
            }
        }
示例#6
0
        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;
        }
示例#9
0
        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();
        }
示例#10
0
        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;
            }
        }
示例#11
0
        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;
            }
        }
示例#12
0
        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);
        }
示例#13
0
        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;
                }
            }
        }
示例#15
0
        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;
        }
示例#17
0
        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;
            }
        }
示例#18
0
        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;
            }
        }
示例#19
0
        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;
        }
示例#20
0
 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;
     }
 }
示例#22
0
		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);
		}
示例#23
0
		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();
		}
		protected override void OnMouseLeftButtonDown(MouseButtonEventArgs e)
		{
			base.OnMouseLeftButtonDown(e);

			lmbInitialPosition = e.GetPosition(this);

			dragStart = lmbInitialPosition.ScreenToViewport(Transform);
			lmbPressed = true;

			content.Background = fillBrush;

			CaptureMouse();
		}
示例#25
0
		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;
		}
示例#26
0
		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;
            }
        }
		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;
		}