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