private void CellCanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) { if (!_isDrawing) { CellCanvas.CaptureMouse(); CellCanvas.MouseMove += CellCanvas_PreviewMouseMove; CellCanvas.PreviewMouseRightButtonDown += CellCanvas_PreviewMouseRightButtonDown; TestPolyline.Points.Clear(); TestPolygon.Points.Clear(); CellCanvas.Children.Clear(); _isDrawing = true; if (LineRadioButton.IsChecked == true) { TestPolyline.Points.Add(e.GetPosition(CellCanvas)); } else { TestPolygon.Points.Add(e.GetPosition(CellCanvas)); } } if (LineRadioButton.IsChecked == true) { TestPolyline.Points.Add(e.GetPosition(CellCanvas)); } else { TestPolygon.Points.Add(e.GetPosition(CellCanvas)); } }
private void CellCanvas_PreviewMouseRightButtonDown(object sender, MouseButtonEventArgs e) { _isDrawing = false; CellCanvas.MouseMove -= CellCanvas_PreviewMouseMove; CellCanvas.PreviewMouseRightButtonDown -= CellCanvas_PreviewMouseRightButtonDown; CellCanvas.ReleaseMouseCapture(); var cells = LineRadioButton.IsChecked == true?GetPolyLineRegion(TestPolyline.Points) : GetPolygonRegion(TestPolygon.Points); foreach (var cell in cells) { var grid = new Rectangle(); grid.Fill = Brushes.Green; Canvas.SetLeft(grid, cell.X * GRID_SIZE); Canvas.SetTop(grid, cell.Y * GRID_SIZE); grid.Width = grid.Height = GRID_SIZE; CellCanvas.Children.Add(grid); } }