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); // } }
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(); }