STNodeEditor 是一个很不错的节点编辑器 使用方式非常简洁 提供了丰富的属性以及事件 可以非常方便的完成节点之间数据的交互及通知 大量的重载函数供开发者使用具有很高的自由性
编译环境: VS 2010 (.Net 3.5)
此控件采用 MIT 开源协议开源 使开发者能够拥有更大的自由度更少的限制
STNodeEditor 拥有非常方便的UI自定义能力 提供的 STNodeControl 基类 可以让开发者能够像自定义 WinForm 控件一样去定义 节点需要的控件
简要说明- 画布
- 移动 鼠标中键 拖动 Mac用户可二指拖动 触控板
- 缩放 按下 Control + 鼠标滚轮
- 画布中的节点内容以及连线关系可通过 STNodeEditor.Load/SaveCanvas() 加载或者保存
- 删除连线
- 移动节点
- 鼠标左键 拖动 节点标题
- 之所以是拖动标题而不是节点任意位置 是因为作者的设计思路是将节点视为一个 窗体 窗体的客户区域留给开发者自定义
- STNode
- 如同 System.Windows.Forms.TreeView 一样 所有的节点都保存在 STNodeEditor.Nodes 中 其数据类型为 STNode
- STNode 为抽象类被 abstract 修饰 需要开发者自己继承向节点中添加选项
- STNode 有三个重要属性 InputOptions OutputOptions Controls
[C#] 纯文本查看 复制代码
public class DemoNode : STNode
{
protected override void OnCreate() {
//在创建节点时候向其添加需要的选项
base.OnCreate();
this.InputOptions.Add(new STNodeOption("Input", typeof(string), false));
this.InputOptions.Add(new STNodeOption("SingleNode", typeof(System.Drawing.Image), true));
this.InputOptions.Add(new STNodeOption("SingleNode", typeof(object), true));
this.OutputOptions.Add(new STNodeOption("output", typeof(string), false));
this.OutputOptions.Add(new STNodeOption("Single", typeof(System.Drawing.Icon), true));
this.OutputOptions.Add(new STNodeOption("Single", typeof(object), true));
this.Title = "Demo_Node";
}
}
//stNodeEditor1.SetTypeColor(type, color);此方法会自动替换已存在值
stNodeEditor1.TypeColor.Add(typeof(string), Color.Yellow);
stNodeEditor1.TypeColor.Add(typeof(Image), Color.Red);
stNodeEditor1.Nodes.Add(new DemoNode());