Nodify(WPF) 节点编辑 核心组件API

NodifyEditor 类

NodifyEditor 是 Nodify 框架的核心控件,它管理节点、连接和交互:

  • 视口控制
    • ViewportLocation:视口位置
    • ViewportZoom:视口缩放级别
    • MinViewportZoom/MaxViewportZoom:缩放限制
    • ViewportTransform:视口变换
  • 选择操作
    • SelectAll():选择所有项
    • UnselectAll():取消选择所有项
    • SelectArea():选择区域内的项
    • InvertSelection():反转选择
    • SelectAllConnections():选择所有连接
  • 拖拽操作
    • BeginDragging():开始拖拽
    • EndDragging():结束拖拽
    • CancelDragging():取消拖拽
  • 平移操作
    • BeginPanning():开始平移
    • EndPanning():结束平移
    • CancelPanning():取消平移
  • 缩放操作
    • ZoomIn():放大
    • ZoomOut():缩小
    • ZoomAtPosition():在特定位置缩放
  • 其他操作
    • FitToScreen():适应屏幕
    • BringIntoView():将项目带入视图
    • AlignSelection():对齐选中项 

ItemContainer 类

ItemContainer 是节点的容器,负责处理节点的选择和拖拽:

  • 属性
    • Location:位置
    • ActualSize:实际大小
    • IsSelected:是否被选中
    • IsDraggable:是否可拖拽
  • 方法
    • BeginDragging():开始拖拽
    • EndDragging():结束拖拽
    • CancelDragging():取消拖拽
    • Select():选择此容器 

Node 类

Node 是节点的视觉表示,包含输入和输出连接器:

  • 属性
    • Header:节点标题
    • Footer:节点底部
    • Input:输入连接器集合
    • Output:输出连接器集合
    • ContentBrush:内容区域画刷
    • HeaderBrush:标题区域画刷
    • FooterBrush:底部区域画刷 

2. 连接系统 API

Connector 类

Connector 是节点上的连接点,用于创建连接:

  • 属性
    • Anchor:连接点位置
    • IsConnected:是否已连接
  • 方法
    • BeginConnecting():开始连接
    • EndConnecting():结束连接
    • RemoveConnections():移除连接

BaseConnection 类

BaseConnection 是所有连接类型的基类:

  • 属性
    • Source:源点
    • Target:目标点
    • ArrowSize:箭头大小
    • ArrowEnds:箭头端点
    • Direction:连接方向
    • Text:连接上的文本
  • 方法
    • DrawLineGeometry():绘制线条几何图形
    • SplitAtLocation():在特定位置分割连接 

Connection 类

Connection 是标准的贝塞尔曲线连接:

  • 方法
    • DrawLineGeometry():绘制贝塞尔曲线
    • DrawDirectionalArrowsGeometry():绘制方向箭头

PendingConnection 类

PendingConnection 用于处理正在创建的连接:

  • 属性
    • SourceAnchor:源锚点
    • TargetAnchor:目标锚点
    • Source:源数据上下文
    • Target:目标数据上下文

3. 交互系统 API

EditorCommands 类

EditorCommands 提供了编辑器的命令:

  • ZoomIn:放大命令
  • ZoomOut:缩小命令
  • SelectAll:全选命令
  • BringIntoView:带入视图命令
  • Align:对齐命令
  • FitToScreen:适应屏幕命令 

InputProcessor 类

InputProcessor 处理输入事件:

  • 方法
    • ProcessEvent():处理输入事件
    • AddHandler():添加处理程序
    • RemoveHandlers():移除处理程序 

4. 特殊节点类型 API

GroupingNode 类

GroupingNode 是可以包含其他节点的容器节点:

  • 属性
    • IsResizing:是否正在调整大小
    • ChildrenArea:子节点区域

KnotNode 类

KnotNode 是用于连接路由/分割的轻量级节点。

StateNode 类

StateNode 是用于状态机表示的专用节点。

5. 高级功能 API

CuttingLine 类

CuttingLine 用于通过绘制线条来切断连接:

  • 属性
    • Start:起点
    • End:终点 

Minimap 类

Minimap 提供整个图的概览和导航功能:

  • 属性
    • ViewportLocation:视口位置
    • ViewportSize:视口大小 

6. 事件系统 API

Nodify 提供了丰富的事件系统,用于通知交互状态的变化:

  • ConnectionEventArgs/ConnectionEventHandler:连接事件
  • ConnectorEventArgs/ConnectorEventHandler:连接器事件
  • ItemsMovedEventArgs/ItemsMovedEventHandler:项目移动事件
  • ResizeEventArgs/ResizeEventHandler:调整大小事件
  • ZoomEventArgs/ZoomEventHandler:缩放事件 

7. 交互状态 API

Nodify 使用状态模式来处理不同的交互状态:

  • EditorState:编辑器状态
    • Cutting:切割状态
    • Panning:平移状态
    • PushingItems:推动项目状态
    • Selecting:选择状态
    • Zooming:缩放状态
  • ConnectorState:连接器状态
    • Connecting:连接状态
    • Default:默认状态
    • Disconnect:断开连接状态
  • ContainerState:容器状态
    • Default:默认状态
    • Dragging:拖拽状态 

8. 手势系统 API

Nodify 的手势系统提供了对输入事件的抽象:

  • MouseGesture:鼠标手势
  • AnyGesture:任意手势
  • AllGestures:所有手势
  • EditorGestures:编辑器手势
    • ConnectionGestures:连接手势
    • ConnectorGestures:连接器手势
    • ItemContainerGestures:项目容器手势
    • NodifyEditorGestures:编辑器手势
    • SelectionGestures:选择手势 
posted @ 2025-05-14 17:02  -Timosthetic  阅读(253)  评论(0)    收藏  举报