lixiaojun
2024-08-16 8f677b1741b78e4de4c95373fc02587a05d7b5ca
WinFrmUI/Yw.WinFrmUI.Hydro.L2d.Core/01-network/00-core/Network_Method.cs
@@ -71,6 +71,87 @@
            }
        }
        /// <summary>
        /// 绘制
        /// </summary>
        /// <param name="g"></param>
        /// <param name="dispRectf">显示区域</param>
        public void Draw(Graphics g, RectangleF dispRectf)
        {
            foreach (var link in this.Links)
            {
                if (link.Intersect(dispRectf))
                {
                    link.Draw(g);
                }
            }
            foreach (var node in this.Nodes)
            {
                if (node.Intersect(dispRectf))
                {
                    node.Draw(g);
                }
            }
        }
        /// <summary>
        /// 选择
        /// </summary>
        public List<Parter> Select(PointF pt)
        {
            int i = 0;
            foreach (var node in this.Nodes)
            {
                node.Selected = node.Contains(pt);
                if (node.Selected)
                {
                    i++;
                }
            }
            if (i > 0)
            {
                this.Links.ForEach(x => x.Selected = false);
                return this.Nodes.Where(x => x.Selected).Select(x => x as Parter).ToList();
            }
            foreach (var link in this.Links)
            {
                link.Selected = link.Contains(pt);
            }
            return this.Links.Where(x => x.Selected).Select(x => x as Parter).ToList();
        }
        /// <summary>
        /// 悬停
        /// </summary>
        public List<Parter> Hover(PointF pt)
        {
            int i = 0;
            foreach (var node in this.Nodes)
            {
                node.Hovered = node.Contains(pt);
                if (node.Hovered)
                {
                    i++;
                }
            }
            if (i > 0)
            {
                this.Links.ForEach(x => x.Hovered = false);
                return this.Nodes.Where(x => x.Hovered).Select(x => x as Parter).ToList();
            }
            foreach (var link in this.Links)
            {
                link.Hovered = link.Contains(pt);
            }
            return this.Links.Where(x => x.Hovered).Select(x => x as Parter).ToList();
        }
    }
}