Пример #1
0
        /// <summary>
        /// Конструктор для главной формы
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            graph1 = new Eurelian.Graph();
            graph2 = new Eurelian.Graph();

            //создание полотна для графа 1
            graph1.G          = new Eurelian.DrawGraph(pictureBox1.Width, pictureBox1.Height, graph1);
            pictureBox1.Image = graph1.G.GetBitmap();

            //создание полотна для графа 2
            graph2.G          = new Eurelian.DrawGraph(pictureBox2.Width, pictureBox2.Height, graph2);
            pictureBox2.Image = graph2.G.GetBitmap();
        }
Пример #2
0
        /// <summary>
        /// Метод для выводы инфорации о графе
        /// </summary>
        /// <param name="graph">граф</param>
        /// <param name="name">его имя</param>
        private void Info(EulerianGraph.Eurelian.Graph graph, string name)
        {
            InformationForm form = new InformationForm();

            form.Show();
            form.Text += name;
            if (graph.Name == null)
            {
                form.NameTextBox.Text = "Данные введены вручную или не введены";
            }
            else
            {
                form.NameTextBox.Text = graph.Name;
            }

            form.NumDTextBox.Text = Convert.ToString(graph1.NumberOfDots);
            form.NumLTextBox.Text = Convert.ToString(graph1.NumberOfLine);
            form.EureTextBox.Text = Convert.ToString(graph1.IsEulerian);

            if (graph.IsEulerian)
            {
                form.WayLabel.Visible   = true;
                form.WayTextBox.Visible = true;
                string str = "";
                foreach (var item in graph.Way)
                {
                    str += Convert.ToString(item) + " ";
                }
                form.WayTextBox.Text = str;
            }
            else
            {
                form.WayLabel.Visible   = false;
                form.WayTextBox.Visible = false;
                form.WayTextBox.Text    = "";
            }
        }
Пример #3
0
 /// <summary>
 /// Метод для загрузки информации в граф
 /// </summary>
 /// <param name="graph">граф</param>
 /// <param name="picture">место, на котором происходит визуализация</param>
 /// <param name="name">имя графа</param>
 private void Input(EulerianGraph.Eurelian.Graph graph, PictureBox picture, string name)
 {
     picture.Hide();
     graph.ClearAllData();
     //Если нажата радиокнопка "ввести из файла"
     if (FromFile_radioButton.Checked)
     {
         //Если загрузка из файла прошла успешно и файл оказался FO массивом, выполнять все последующие операции
         if (graph.ReadFromFile())
         {
             //Проверка графа на эйлеровость
             graph.EulerianOrNot();
             //Отображение picterbox
             picture.Show();
             //Очистка полотна
             graph.G.clearSheet();
             //Визуализиация графа
             graph.Visualize();
             //Если граф эйлеров, отображение пути
             if (graph.IsEulerian)
             {
                 //Очистка полотна
                 graph.G.clearSheet();
                 //Рисование пути
                 graph.DrawWay();
             }
         }
     }
     //Если нажата радиокнопка "ввести вручную"
     else
     {
         //Создать форму для ввода с клавиатуры
         KeyboardInputForm form = new KeyboardInputForm(graph);
         form.groupBox1.Text += name;
         //Вывести форму для ввода с клавиатуры в модальном режиме
         form.ShowDialog();
         try
         {
             //Конвертация ФО в матрицу смежности
             graph.ConvertFOtoMatrix();
             //Проверка графа на эйлеровость
             graph.EulerianOrNot();
             //Отображение picterbox
             picture.Show();
             //Очистка полотна
             graph.G.clearSheet();
             //Визуализиация графа
             graph.Visualize();
             //Если граф эйлеров, отображение пути
             if (graph.IsEulerian)
             {
                 //Очистка полотна
                 graph.G.clearSheet();
                 //Рисование пути
                 graph.DrawWay();
             }
         }
         catch (Exception)
         {
             MessageBox.Show("Данные не введены или введены неверно", "Ошибка");
         }
     }
 }