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