解决方案
50
你贴的这个很简单的软件,过去我们使用 wpf 时,程序员最多用 1 周就做开发完毕了。
简单地说,首先设计一下图形的业务逻辑数据结构,例如你是用了大致是4、5种业务结构(对于“连线”来说,你只有简单的有向直线段,因此它基本上不代绘图信息)。然后每一种业务结构用 wpf 的用户控件自定义实现,你画的比较简单,基本上只要写上不足10行c#代码、10行左右 xaml 代码就可以。再在一个画布上支持用户拖放控件(相应的箭头线自动跟随移动),再自动保存图形数据,这使用 wpf 也不过就是几十行代码。wpf 是一个专用来开发这种系统的工具,使用 winform 你可能要写1000行代码,而且还容易搞垮。使用 wpf 起码快了10 倍开发速度。
简单地说,首先设计一下图形的业务逻辑数据结构,例如你是用了大致是4、5种业务结构(对于“连线”来说,你只有简单的有向直线段,因此它基本上不代绘图信息)。然后每一种业务结构用 wpf 的用户控件自定义实现,你画的比较简单,基本上只要写上不足10行c#代码、10行左右 xaml 代码就可以。再在一个画布上支持用户拖放控件(相应的箭头线自动跟随移动),再自动保存图形数据,这使用 wpf 也不过就是几十行代码。wpf 是一个专用来开发这种系统的工具,使用 winform 你可能要写1000行代码,而且还容易搞垮。使用 wpf 起码快了10 倍开发速度。
20
假如每一个业务对象在画布上的大体位置不是采集手工调整(手工拖放控件)的数据,而是你用一个程序自动计算的,那么稍微复杂一点,是计算各个点的“重心”然后换算为相互“排斥”的距离,来不断迭代地去移动每一个节点。
20
绘图这种就用GDI,字写成简单的自定义控件。写完后生成一下,往里拖
10
画起来简单,关键是布局,要仔细规划下。