HTML5技术

C#如何实现一个简单的流程图设计器 - JackWang-CUMT(2)

字号+ 作者:H5之家 来源:博客园 2015-10-31 18:22 我要评论( )

ReDrawAll() 2 { 3 renderGrid(); 4 Graphics g = this .panel1.CreateGraphics(); 5 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 6 GObject CurrObj = new GObject(); 7 Rectangle Rc

ReDrawAll() 2 { 3 renderGrid(); 4 Graphics g = this.panel1.CreateGraphics(); 5 g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; 6 GObject CurrObj = new GObject(); 7 Rectangle Rct = new Rectangle(); 8 Pen p = new Pen(Color.Black); p.Width = __penWidth * __zoomTimes; 11 12 Image ObjImg; 13 int xm = 0; 14 int ym = 0; _maxX = 0; 17 int _maxY = 0; 18 int _minX = 0; 19 int _minY = 0; 20 int _oldW = this.panel1.Width; 21 int _oldH = this.panel1.Height; IsLine = ""; (int i = 0; i < GNetworkFlow.Nobj; i++) 26 { 27 CurrObj = GNetworkFlow.GObjects[i]; (CurrObj.Type == ; ) IsLine = ; ) && (CurrObj.Type != ; 32 // 33 #region old panel1作为画布,将其嵌套在panel2中实现超出边界出现滚动条 (_maxX < CurrObj.x2) 36 { 37 _maxX = CurrObj.x2; 38 } 39 if (_maxY < CurrObj.y2) 40 { 41 _maxY = CurrObj.y2; 42 } 43 if (_minX > CurrObj.x1) 44 { 45 _minX = CurrObj.x1; 46 } 47 if (_minY > CurrObj.y1) 48 { 49 _minY = CurrObj.y1; 50 } (_oldW < _maxX - _minX) 55 { 56 this.panel1.Width = _maxX - _minX; 57 } 58 if (_oldH < _maxY - _minY) 59 { 60 this.panel1.Height = _maxY - _minY; 61 } 62 if (this.panel1.Height < this.panel2.Height) 63 { 64 this.panel1.Height = this.panel2.Height; 65 } 66 if (this.panel1.Width < this.panel2.Width) 67 { 68 this.panel1.Width = this.panel2.Width; 69 } (IsLine) 75 { : 77 arrow.DrawArrow(g, p, p.Brush, CurrObj.x1, CurrObj.y1, CurrObj.x2, CurrObj.y2); 78 xm = (CurrObj.x1 + CurrObj.x2) / 2; 79 ym = (CurrObj.y1 + CurrObj.y2) / 2; 80 AddText(xm, ym, CurrObj.Name, false); 81 break; : 83 Rct.X = CurrObj.x1; 84 Rct.Y = CurrObj.y1; 85 Rct.Width = CurrObj.x2 - CurrObj.x1; 86 Rct.Height = CurrObj.y2 - CurrObj.y1; 87 if (CurrObj.Type != String.Empty) 88 { 89 ObjImg = FindGObjectTypeImage(CurrObj.Type); 90 g.DrawImage(ObjImg, Rct); 91 AddText(CurrObj.x1, CurrObj.y1, CurrObj.Name, true); 92 GNetworkFlow.AdjustLinkedTo(CurrObj.Name); 93 } 94 break; 95 } 96 } 97 98 }

View Code

下面将继续完善以下几个功能:

1)序列化:可以将图形序列化和反序列化,将序列化的信息保存到数据库,也可以从数据库加载图形;

2)图形节点必须要附加其他属性和方法,为流程记录更多的信息、例如权限配置、当前处理的人、下一步是什么节点等;

3)绘图功能的加强,绘图可以动态修改颜色,这样可以区分流程在不同节点的颜色显示;

4)布局优化算法,能否根据画布大小,自动排列图形...

今天又将界面做了美化,界面如下:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 如何快速处理线上故障 - 倒骑的驴

    如何快速处理线上故障 - 倒骑的驴

    2017-05-02 12:01

  • HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    2017-05-02 11:02

  • Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

    Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

    2017-05-02 11:00

  • 如何在 ASP.NET Core 中发送邮件 - Savorboard

    如何在 ASP.NET Core 中发送邮件 - Savorboard

    2017-05-02 08:02

网友点评
b