Ejemplo n.º 1
0
        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();
        }