// ----Обработчики событий
 /// <summary>
 /// Привести в соответствие с координатами мыши выделение вершин графа.
 /// Та, которая под мышью, будет выделенной, а та, с которой мышь ушла, станет обычной
 /// </summary>
 /// <param name="mousePoint">Координаты мыши</param>
 private void ChangeVerticesSelecting(PointF mousePoint)
 {
     // Если была выделенная вершина, проверяем, покинула ли мышь её. Если нет - конец. Если да - убираем подсветку
     if (SelectedVertex != null)
     {
         if (!VertexDrawer.IsCoordinatesOnVertex(SelectedVertex, mousePoint))
         {
             // Для экономии перерисовываем не всё, а только эту вершину
             VertexDrawer.DrawVertex(GetGraphics(), SelectedVertex);
             SelectedVertex = null;
             Invalidate();
         }
         else
         {
             return;
         }
     }
     // Смотрим, оказалась ли теперь мышь над одной из вершин
     foreach (var vertex in Graph.Vertices)
     {
         // Если да - выделяем и выходим (больше искать нечего)
         if (VertexDrawer.IsCoordinatesOnVertex(vertex, mousePoint))
         {
             SelectedVertex = vertex;
             VertexDrawer.DrawSelectedVertex(GetGraphics(), vertex);
             Invalidate();
             return;
         }
     }
 }
Ejemplo n.º 2
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)
             {
                 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();
     }
 }