/// <summary>
 /// Привести в соответствие с координатами мыши выделение рёбер графа.
 /// То, которое под мышью, будет выделенным, а то, с которого мышь ушла, станет обычным
 /// </summary>
 /// <param name="mousePoint">Координаты мыши</param>
 private void ChangeEdgesSelecting(PointF mousePoint)
 {
     // Если было выделенное ребро, проверяем, покинула ли мышь его. Если нет - конец. Если да - убираем подсветку
     if (SelectedEdge != null) {
         if (!EdgeDrawer.IsCoordinatesOnEdge(SelectedEdge, mousePoint)) {
             EdgeDrawer.DrawEdge(GetGraphics(), SelectedEdge);
             SelectedEdge = null;
             Invalidate();
         }
         else
             return;
     }
     // Если рёбра не интерактивны - выделения нет
     if (InteractiveMode != InteractiveMode.Interactive && InteractiveMode != InteractiveMode.OnlyEdges)
         return;
     // Смотрим, оказалась ли мышь над одним из рёбер
     foreach (var edge in Graph.Edges) {
         // Если да - выделяем и выходим (искать больше нечего)
         if (EdgeDrawer.IsCoordinatesOnEdge(edge, mousePoint)) {
             SelectedEdge = edge;
             EdgeDrawer.DrawSelectedEdge(GetGraphics(), edge);
             Invalidate();
             return;
         }
     }
 }
 /// <summary>
 /// Привести в соответствие с координатами мыши выделение рёбер графа.
 /// То, которое под мышью, будет выделенным, а то, с которого мышь ушла, станет обычным
 /// </summary>
 /// <param name="mousePoint">Координаты мыши</param>
 private void ChangeEdgesSelecting(PointF mousePoint)
 {
     // Если было выделенное ребро, проверяем, покинула ли мышь его. Если нет - конец. Если да - убираем подсветку
     if (SelectedEdge != null)
     {
         if (!EdgeDrawer.IsCoordinatesOnEdge(SelectedEdge, mousePoint))
         {
             // Для экономии перерисовываем не всё, а только это ребро
             EdgeDrawer.DrawEdge(GetGraphics(), SelectedEdge);
             SelectedEdge = null;
             Invalidate();
         }
         else
         {
             return;
         }
     }
     // Смотрим, оказалась ли мышь над одним из рёбер
     foreach (var edge in Graph.Edges)
     {
         // Если да - выделяем и выходим (искать больше нечего)
         if (EdgeDrawer.IsCoordinatesOnEdge(edge, mousePoint))
         {
             SelectedEdge = edge;
             EdgeDrawer.DrawSelectedEdge(GetGraphics(), edge);
             Invalidate();
             return;
         }
     }
 }
Пример #3
0
 /// <summary>
 /// Метод отрисовки графа
 /// </summary>
 public void DrawGraph(Graphics g)
 {
     if (Graph == null)
     {
         return;
     }
     // Очищаем поверхность и заливаем заданным фоновым цветом
     g.Clear(Settings.BackgroundColor);
     // Рисуем вершины
     foreach (var vertex in Graph.Vertices)
     {
         if (vertex == SelectedVertex)
         {
             VertexDrawer.DrawSelectedVertex(g, vertex);
         }
         else
         {
             VertexDrawer.DrawVertex(g, vertex);
         }
     }
     // Рисуем рёбра
     foreach (var edge in Graph.Edges)
     {
         if (edge == SelectedEdge)
         {
             EdgeDrawer.DrawSelectedEdge(g, edge);
         }
         else
         {
             EdgeDrawer.DrawEdge(g, edge);
         }
     }
 }
 /// <summary>
 /// Метод отрисовки графа
 /// </summary>
 public void DrawGraph()
 {
     if (Graph == null)
         return;
     using (var g = GetGraphics()) {
         // Очищаем поверхность и заливаем заданным фоновым цветом
         g.Clear(Settings.BackgroundColor);
         // Рисуем вершины
         foreach (var vertex in Graph.Vertices)
             if (vertex == SelectedVertex && (InteractiveMode == InteractiveMode.Interactive || InteractiveMode == InteractiveMode.OnlyVertices))
                 VertexDrawer.DrawSelectedVertex(g, vertex);
             else
                 VertexDrawer.DrawVertex(g, vertex);
         // Рисуем рёбра
         foreach (var edge in Graph.Edges)
             if (edge == SelectedEdge && (InteractiveMode == InteractiveMode.Interactive || InteractiveMode == InteractiveMode.OnlyEdges))
                 EdgeDrawer.DrawSelectedEdge(g, edge);
             else
                 EdgeDrawer.DrawEdge(g, edge);
         // Вызываем перерисовку элемента управления
         Invalidate();
     }
 }
 /// <summary>
 /// Метод отрисовки графа
 /// </summary>
 public void DrawGraph()
 {
     if (Graph == null)
     {
         return;
     }
     using (var g = GetGraphics()) {
         // Очищаем поверхность и заливаем заданным фоновым цветом
         g.Clear(Settings.BackgroundColor);
         // Рисуем вершины
         foreach (var vertex in Graph.Vertices)
         {
             if (vertex == SelectedVertex)
             {
                 VertexDrawer.DrawSelectedVertex(g, vertex);
             }
             else
             {
                 VertexDrawer.DrawVertex(g, vertex);
             }
         }
         // Рисуем рёбра
         foreach (var edge in Graph.Edges)
         {
             if (edge == SelectedEdge)
             {
                 EdgeDrawer.DrawSelectedEdge(g, edge);
             }
             else
             {
                 EdgeDrawer.DrawEdge(g, edge);
             }
         }
         // Вызываем перерисовку элемента управления
         Invalidate();
     }
 }