/// <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; } } }
/// <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(); } }