コード例 #1
0
        public void UpdatePosition()
        {
            if (Math.Abs(mouseWheelDelta) > 60)
            {
                zoom = Math.Max(Math.Min(zoom + mouseWheelDelta * zoomSensitivity, maxZoom), minZoom);

                fieldLayer.SetZoom(zoom);
                gridLayer.canvasImage.RenderTransform = fieldLayer.canvasImage.RenderTransform;
                pathLayer.canvasImage.RenderTransform = fieldLayer.canvasImage.RenderTransform;

                mouseWheelDelta = 0;
            }

            Point mousePositionCurrent = Mouse.GetPosition(canvasWindowUI.canvas);

            // if(Math.Abs((mousePositionCurrent.X - mousePositionPrevious.X) + (mousePositionCurrent.Y - mousePositionPrevious.Y)) > 80) return;
            if (Mouse.MiddleButton == MouseButtonState.Pressed)
            {
                mouseMoveDelta = (Point)(mousePositionCurrent - mousePositionPrevious);
            }
            else
            {
                mouseMoveDelta = new Point(0, 0);
            }

            mousePositionPrevious = mousePositionCurrent;

            // if (Mouse.MiddleButton == MouseButtonState.Pressed) {
            fieldLayer.SetPosition(fieldLayer.GetPosition() + (System.Windows.Vector)mouseMoveDelta);
            Point position = fieldLayer.GetPosition();

            gridLayer.SetPosition(grid.x * zoom + position.X, grid.y * zoom + position.Y);
            pathLayer.SetPosition(grid.x * zoom + position.X, grid.y * zoom + position.Y);
            // }
        }
コード例 #2
0
        public void UpdateBrush(object sender, MouseEventArgs e)
        {
            // Point position = (Point) ((e.GetPosition(canvasWindowUI.canvas) - gridLayer.GetPosition()) * (1 / grid.unitPerNode * (1 / zoom)));
            double unitM    = 1 / grid.unitPerNode;
            double zoomM    = 1 / zoom;
            Point  position = (Point)((e.GetPosition(canvasWindowUI.canvas) - gridLayer.GetPosition()) * (zoomM) / grid.unitPerNode);

            position.X = (int)(position.X);
            position.Y = (int)(position.Y);

            if (e.LeftButton == MouseButtonState.Pressed)
            {
                grid.FillPixels(brush.GetPixels(new Vector2Int((int)position.X, (int)position.Y)), true);
            }
            else if (e.RightButton == MouseButtonState.Pressed)
            {
                grid.FillPixels(brush.GetPixels(new Vector2Int((int)position.X, (int)position.Y)), false);
            }
            else
            {
                return;
            }

            RenderGrid();
        }