private void Btn_PaintDots_Click(object sender, RoutedEventArgs e) { if (Int32.Parse(Tb_DotsNumber.Text) < 3 || Int32.Parse(Tb_DotsNumber.Text) > 999) { MessageBox.Show(messageBoxText: "Можно построить случайно 3-999 точек", caption: "Error", button: MessageBoxButton.OK, icon: MessageBoxImage.Hand); return; } SpacePoint = new AlgorithMCH(Int32.Parse(Tb_DotsNumber.Text)); myDots = new Ellipse[SpacePoint.n]; Random rand = new Random(); for (int i = 0; i < SpacePoint.n; i++) { bool tooClose = false; //флаг, показывает если центры точек слишком близко do { int x = rand.Next(-450, 450); int y = rand.Next(-450, 450); SpacePoint.CoordOfDots[i, 0] = x; SpacePoint.CoordOfDots[i, 1] = y; tooClose = false; if (i == 0) { break; } for (int j = 0; j < i; j++) {//сравниваем все точки с новой, если расстояне <60 - tooClose if (SpacePoint.VectorModule(SpacePoint.CoordOfDots[j, 0] - SpacePoint.CoordOfDots[i, 0], SpacePoint.CoordOfDots[j, 1] - SpacePoint.CoordOfDots[i, 1]) < 15) { tooClose = true; break; } } } while (tooClose); myDots[i] = new Ellipse { Margin = new Thickness(SpacePoint.CoordOfDots[i, 0], 0, 0, SpacePoint.CoordOfDots[i, 1]), Width = 6, Height = 6, Fill = Brushes.Purple, Stroke = Brushes.Red, }; WorkGrid.Children.Add(myDots[i]); } Btn_PaintDots.IsEnabled = false; Tb_DotsNumber.IsEnabled = false; Btn_MCHBuild.IsEnabled = true; rb_FileDots.IsEnabled = false; }
private void Btn_DotsFromFile_Click(object sender, RoutedEventArgs e) { StreamReader fileIn = new StreamReader(Tb_FileName.Text); int CountityOfDots = int.Parse(fileIn.ReadLine()); if (CountityOfDots < 3 || CountityOfDots > 999) { MessageBox.Show(messageBoxText: "Можно построить случайно 3-999 точек", caption: "Error", button: MessageBoxButton.OK, icon: MessageBoxImage.Hand); return; } string str = ""; str = fileIn.ReadToEnd(); fileIn.Close(); string[] strDots = str.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries); SpacePoint = new AlgorithMCH(CountityOfDots); myDots = new Ellipse[SpacePoint.n]; for (int i = 0; i < SpacePoint.n; i++) { string[] OrdAbs = strDots[i].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries); SpacePoint.CoordOfDots[i, 0] = int.Parse(OrdAbs[0]); SpacePoint.CoordOfDots[i, 1] = int.Parse(OrdAbs[1]); myDots[i] = new Ellipse { Margin = new Thickness(SpacePoint.CoordOfDots[i, 0], 0, 0, SpacePoint.CoordOfDots[i, 1]), Width = 6, Height = 6, Fill = Brushes.Purple, Stroke = Brushes.Red, }; WorkGrid.Children.Add(myDots[i]); } Btn_PaintDots.IsEnabled = false; Btn_DotsFromFile.IsEnabled = false; Tb_DotsNumber.IsEnabled = false; Btn_MCHBuild.IsEnabled = true; rb_RandomDots.IsEnabled = false; }