如同我第一个版本一样
版本一功能说明一下:
1.支持拖动绘制工作节点
2.支持移动每个节点的移动
3.支持直线连接节点
4.支持节点移动连接线自动跟随
5.支持高亮显示选中的节点连线
6.支持能删除选中节点和连线
7.支持选中节点能显示节点的属性,同时可以进行节点更改
8.支持能保存已绘制流程图(后续可根据个人情况配置,入库或者配置文件)
9.支持能加载保存后的数据(根据入库或者配置文件做相对应的开发)
10.支持能绘制节点和线的文字
11.支持能自动计算两个节点之间的连接点,不要手动调整
12.支持修改节点文字颜色背景颜色等等功能
13.支持绘制超出边界自动回显功能
14.支持节点右键删除功能
15.支持连接线高亮右键删除功能
最后说明:软件基于 +GDI 绘制工作流程图 软件没有使用任何第三方插件。方便新手进行拓展其他功能开发。
当前版本因为实在整个系统里面,所以使用的是数据库(MYSQL)进行的存储
流程纯GDI+没有使用任何第三方
都是代码实现的
try { lab_connect.Text = "-"; // 获取当前鼠标位置 Point p = new Point(); p.X = e.X; p.Y = e.Y; foreach (Tuple<ButtonX, ButtonX, int, string> t in lines) { // 进行计算连线箭头的位置 Point p1 = new Point(); Point p2 = new Point(); if (t.Item1.Top + t.Item1.Height < t.Item2.Top) { p1 = new Point(t.Item1.Left + t.Item1.Width / 2, t.Item1.Top + t.Item1.Height); p2 = new Point(t.Item2.Left + t.Item2.Width / 2, t.Item2.Top); } else if (t.Item1.Top > t.Item2.Top + t.Item2.Height) { p1 = new Point(t.Item1.Left + t.Item1.Width / 2, t.Item1.Top); p2 = new Point(t.Item2.Left + t.Item2.Width / 2, t.Item2.Top + t.Item2.Height); } if (t.Item1.Top + t.Item1.Height * 4 < t.Item2.Top) { p1 = new Point(t.Item1.Left + t.Item1.Width / 2, t.Item1.Top + t.Item1.Height); p2 = new Point(t.Item2.Left + t.Item2.Width / 2, t.Item2.Top); } else if (t.Item1.Top > t.Item2.Top + t.Item2.Height * 4) { p1 = new Point(t.Item1.Left + t.Item1.Width / 2, t.Item1.Top); p2 = new Point(t.Item2.Left + t.Item2.Width / 2, t.Item2.Top + t.Item2.Height); } else if (t.Item1.Left + t.Item1.Width < t.Item2.Left) { p1 = new Point(t.Item1.Left + t.Item1.Width, t.Item1.Top + t.Item1.Height / 2); p2 = new Point(t.Item2.Left, t.Item2.Top + t.Item2.Height / 2); } else if (t.Item1.Left > t.Item2.Left + t.Item2.Width) { p1 = new Point(t.Item1.Left, t.Item1.Top + t.Item1.Height / 2); p2 = new Point(t.Item2.Left + t.Item2.Width, t.Item2.Top + t.Item2.Height / 2); } newPen.CustomEndCap = lineCap; bool is_hover = LineIsHover.GetPointIsInLine(p, p1, p2, 2); g = this.pictureBox1.CreateGraphics(); if (is_hover) { lab_connect.Text = t.Item4; newPen.Color = Color.Red; g.DrawLine(newPen, p1, p2); } else { newPen.Color = Color.SeaGreen; g.DrawLine(newPen, p1, p2); } } } catch (Exception ex) { }