// ----Обработчики событий /// <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; } } }
/// <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(); } }