protected override void OnMouseMove(MouseEventArgs e) { base.OnMouseMove(e); _hoverPoint = Point.Empty; if (_bMouseDown) { if (_moveLine != null) { if (_moveLineStart) { _moveLine.StartPoint.X = e.X; _moveLine.StartPoint.Y = e.Y; } else { _moveLine.EndPoint.X = e.X; _moveLine.EndPoint.Y = e.Y; } _moveLine.RecalculateSummaryPoint(); return; } _pointEnd = new Point(e.X, e.Y); } else { Cursor = Cursors.Arrow; _hoverDepthLine = TripWires.FirstOrDefault( d => e.X > d.SummaryPoint.X && e.X <d.SummaryPoint.X + d.SummaryWidth && e.Y> d.SummaryPoint.Y && e.Y < d.SummaryPoint.Y + 15); if (_hoverDepthLine != null) { Cursor = Cursors.Hand; } else { double minD = 10; _moveLine = null; foreach (var dl in TripWires) { var d = Math.Sqrt(Math.Pow(dl.StartPoint.X - e.X, 2) + Math.Pow(dl.StartPoint.Y - e.Y, 2)); if (d < minD) { minD = d; _moveLine = dl; _moveLineStart = true; Cursor = Cursors.Hand; _hoverPoint = dl.StartPoint; } d = Math.Sqrt(Math.Pow(dl.EndPoint.X - e.X, 2) + Math.Pow(dl.EndPoint.Y - e.Y, 2)); if (d < minD) { minD = d; _moveLine = dl; _moveLineStart = false; Cursor = Cursors.Hand; _hoverPoint = dl.EndPoint; } } } } Invalidate(); }