/// <summary> /// Метод для обработки удаления соединения между слоями /// </summary> private void MainPanel_MouseClick(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { return; } // нахождение соединения, на который нажал пользователь Connection connection = ConnectionLine.IsIntersection(Save.NNetwork.Connections, new Point(e.X, e.Y)); if (connection is null) { return; } DialogResult result = MessageBox.Show("Do you wanna to delete this connection?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (result == DialogResult.Yes) { // удаление соединения connection.ComponentFirst.Layer.NextLayer = null; Save.NNetwork.Connections.Remove(connection); LayersControls.DrawLines(mainPanel, Save.NNetwork.Connections); BlockTrain(sender, e); } }
/// <summary> /// Метод для отрисовки соединений между слоями /// </summary> /// <param name="panel">Компонента, на которой необходимо нарисовать</param> /// <param name="connections">Список соединений</param> public static void DrawLines(Control panel, List <Connection> connections) { using (Graphics graphics = panel.CreateGraphics()) { graphics.Clear(panel.BackColor); // очистка экрана Pen pen = new Pen(Color.Black, 4); foreach (Connection connection in connections) { Point[] points = ConnectionLine.GetLocation(connection); graphics.DrawLine(pen, points[0], points[1]); // отрисовка линии DrawArrow(graphics, pen, points); // отрисока направления } } }