private void pictureBoxGraph_MouseDown(object sender, MouseEventArgs e) { var location = e.Location; //Правая кнопка мыши - создание точки if (e.Button == MouseButtons.Right) { MyPoint myPointExact = new MyPoint(location.X, location.Y, graphicsExact, radius); MyPoint myPointGenetic = new MyPoint(location.X, location.Y, graphicsGenetic, radius); if (!list_of_points_exact.Cross(myPointExact.GetX(), myPointExact.GetY())) { myPointExact.Draw(0); myPointGenetic.Draw(0); list_of_points_exact.Add(myPointExact); list_of_points_genetic.Add(myPointGenetic); if (graph.Length > 0) { int count = list_of_points_exact.Count(); int[,] result = new int[count, count]; for (int i = 0; i < count - 1; i++) { for (int j = 0; j < count - 1; j++) { result[i, j] = graph[i, j]; } result[i, count - 1] = 0; } graph = result; int[] temp_result_exact = new int[count]; for (int i = 0; i < count - 2; i++) { temp_result_exact[i] = color_array_exact[i]; } color_array_exact = temp_result_exact; int[] temp_result_genetic = new int[count]; for (int i = 0; i < count - 2; i++) { temp_result_genetic[i] = color_array_genetic[i]; } color_array_genetic = temp_result_genetic; } else { color_array_exact = new int[1]; color_array_genetic = new int[1]; graph = new int[1, 1]; } } else { int i = list_of_points_exact.IndexOfPoint(myPointExact.GetX(), myPointExact.GetY()); MyPoint temp = list_of_points_exact.GetPoint(i); MyPoint temp_genetic = list_of_points_genetic.GetPoint(i); temp.SetChoose(false); temp_genetic.SetChoose(false); temp.Draw(0); temp_genetic.Draw(0); } } //Левая кнопка мыши - выделение узла для установки связи if (e.Button == MouseButtons.Left) { if (list_of_points_exact.Cross(location.X, location.Y)) { int i = list_of_points_exact.IndexOfPoint(location.X, location.Y); MyPoint temp = list_of_points_exact.GetPoint(i); MyPoint temp_genetic = list_of_points_genetic.GetPoint(i); temp.SetChoose(true); temp_genetic.SetChoose(true); temp.Draw(0); temp_genetic.Draw(0); temp.Draw(2); temp_genetic.Draw(2); if (list_of_points_exact.Selected() == 2) { temp.Draw(0); temp_genetic.Draw(0); temp.SetChoose(false); temp_genetic.SetChoose(false); int j = list_of_points_exact.GetChoosen(); MyPoint temp_point_2 = list_of_points_exact.GetPoint(j); MyPoint temp_point_2_genetic = list_of_points_genetic.GetPoint(j); temp_point_2.Draw(0); temp_point_2_genetic.Draw(0); temp_point_2.SetChoose(false); temp_point_2_genetic.SetChoose(false); Pen pen_line = new Pen(Color.Black, 2); graphicsExact.DrawLine(pen_line, temp.GetX(), temp.GetY(), temp_point_2.GetX(), temp_point_2.GetY()); graphicsGenetic.DrawLine(pen_line, temp_genetic.GetX(), temp_genetic.GetY(), temp_point_2_genetic.GetX(), temp_point_2_genetic.GetY()); graph[i, j] = 1; graph[j, i] = 1; } } } }