Example #1
0
        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);
            if (tracking)
            {
                selectedEntity.Move(new Point(e.X - _stratPoint.GetPoint().X, e.Y - _stratPoint.GetPoint().Y));
                if (typeof(Connector).IsInstanceOfType(selectedEntity))
                {
                    for (int k = 0; k < shapes.Count; k++)
                    {
                        shapes[k].HitConnector(e.Location);
                    }
                }
            }
            else if (_leftMouse)
            {
                _viewOriginPoint = new DiagramPoint(_viewOriginPoint.GetPoint().X + e.X - _stratPoint.GetPoint().X, _viewOriginPoint.GetPoint().Y + e.Y - _stratPoint.GetPoint().Y);
            }

            int    entityTYpe    = -1;//0:ShapeBase;1:ShapeBase.connectors;2:connections;3:connections.From;4:connections.To.
            Entity hoveredentity = shapes.Cast <Entity>().FirstOrDefault(f => f.Hit(e.Location));

            if (hoveredentity == null)
            {
                hoveredentity = connections.Cast <Connection>().FirstOrDefault(f =>
                {
                    if (f.Hit(e.Location))
                    {
                        entityTYpe = 2;
                        return(true);
                    }
                    if (f.From.Hit(e.Location))
                    {
                        entityTYpe = 3;
                        return(true);
                    }
                    if (f.To.Hit(e.Location))
                    {
                        entityTYpe = 4;
                        return(true);
                    }
                    return(false);
                });
            }

            if (entityTYpe == 3)
            {
                hoveredentity = ((Connection)hoveredentity).From;
            }
            if (entityTYpe == 4)
            {
                hoveredentity = ((Connection)hoveredentity).To;
            }

            UpdateHovered(hoveredentity);

            _stratPoint = e.Location;
            Invalidate(true);
        }
        /// <summary>
        /// Tests if the mouse hits this connector
        /// </summary>
        /// <param name="p"></param>
        /// <returns></returns>
        public override bool Hit(Point p)
        {
            p.X = p.X - this.site.ViewOriginPoint.GetPoint().X;
            p.Y = p.Y - this.site.ViewOriginPoint.GetPoint().Y;

            Point a = p;
            Point b = point.GetPoint();

            b.Offset(-7, -7);
            //a.Offset(-1,-1);
            Rectangle r = new Rectangle(a, new Size(0, 0));
            Rectangle d = new Rectangle(b, new Size(15, 15));

            return(d.Contains(r));
        }