第八节:Nodify 编辑器属性

引言

经过前几章的学习,你已经对Nodify框架有了初步的编程思路。当然只局限于这些还完全不够,本章节将阐述各个结构组件的一些常用属性,以便在日后的开发过程中更得心应手。

1、编辑器

平移
简介属性默认值
平移功能 控制DisablePanningfalse
平移过程中IsPanning =>true/
平移过程中ViewportSizeViewportLocation 和 ViewportTransform自动更新/
自动平移 控制DisableAutoPanningfalse
自动平移速度AutoPanSpeed15 pixels
触发自动平移的边缘距离AutoPanEdgeDistance1 millisecond
缩放
简介属性默认值
缩放功能 控制DisableZoomingfalse
缩放过程中ViewportSizeViewportLocation 和 ViewportTransform自动更新/
当前比例ViewportZoom1
最小比例MinViewportZoom0.1
最大比例MaxViewportZoom2
选择
简介属性默认值
鼠标拖动框选IsSelecting=>truefalse
缩放过程中SelectedArea自动更新/
当前选择节点集合SelectedItems/
实时选择,框选时节点选择状态立即变化,否则松开鼠标后再变化EnableRealtimeSelectiontrue
键鼠配合
  • Replace - 无修饰键(默认行为,清除已选项目并开始新选择)
  • Append - shift键(将选择添加到当前已选项目)
  • Remove - alt键(从当前已选项目中移除选择)
  • Invert - control键(移除选定项目并添加未选中项目)
/
NodifyEditor 实例 API
  • SelectArea
  • InvertSelection
  • UnselectArea
对齐
简介属性默认值
移动选中项目时对齐到何处GridCellSize1
自动校准位置EnableSnappingCorrectiontrue

EditorCommands类中可以看到以下RoutedUICommand

命令
简介属性默认值
相对于视口中心放大ZoomIn - CTRL +/
相对于视口中心缩小ZoomOut - CTRL -/
选择所有项目SelectAll - CTRL A
将视口移动到指定位置BringIntoView0,0
对齐方法:Top、Left、Bottom、Right、Middle、CenterAlignT
缩放并移动Viewport以显示尽可能多的项目FitToScreen /

 您可以在NodifyEditor实例上以编程方式调用这些命令的相应方法

  • FitToScreen
  • BringIntoView
  • ZoomAtPosition
  • ZoomIn
  • ZoomOut

2、节点容器 ItemContainer

项目容器(ItemContainer) 是编辑器中最重要的部分。它是一个内容控件,用于包装由 编辑器(NodifyEditor) 的 ItemsSource 生成的每个控件,并在图形坐标中具有 Location属性。

选择操作:鼠标左键点击并释放

选择
简介属性默认值
是否可选IsSelectabletrue
是否选中IsSelectedfalse
API

IsSelectableInArea

方法
是否可拖动IsDraggable true
通过释放右键取消拖拽操作AllowDraggingCancellation true

事件:

拖拽 ItemContainer 会触发一系列事件,这些事件由 NodifyEditor 处理并应用于所有选定的项:

  • DragStarted - 将 IsPreviewingLocation 依赖属性设置为 true;
  • DragDelta - 在拖拽操作完成或取消之前持续触发,并将所有选定项移动;
  • DragCompleted - 完成或取消拖拽操作,并将 Location 依赖属性设置为最终位置,IsPreviewingLocation 设置为 false

3、节点

节点是节点编辑器的基本组件。它们被包装在ItemContainer中,并且可以是任何自定义控件。

3.1、Node 控件 

节点的Header可以使用HeaderTemplate进行自定义,节点的Footer可以使用FooterTemplate进行自定义;Input集合中的每个项目可以使用InputConnectorTemplate进行自定义。同样,Output可以使用OutputConnectorTemplate进行自定义。

 3.2、GroupingNode 控件

这种类型的节点可以调整大小,如果通过Header拖动,它将移动其内部的节点。

如果按住SwitchMovementModeModifierKey(默认情况下为Shift键),它将移动而不会移动其子节点。

<nodify:NodifyEditor><nodify:NodifyEditor.ItemsSource><CompositeCollection><nodify:GroupingNode Header="Grouping node"Width="300"Height="250" />            <nodify:Node Header="My node" /><nodify:Node Header="My other node" /></CompositeCollection></nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

节点的Header可以使用HeaderTemplate进行自定义。同样,节点的Content可以使用ContentTemplate进行自定义。

节点的大小可以通过更改ActualSize依赖属性的值来编程设置。

CanResizetrue
MovementModeGrouped

ResizeCompleted

命令 Command

ResizeStarted

命令 Command

3.3、KnotNode 控件

这种类型的控件可以用于重新排布(reroute)Connection,因为它只支持一个Connector

节点的Content可以使用ContentTemplate进行自定义。

<nodify:NodifyEditor><nodify:NodifyEditor.ItemsSource><CompositeCollection><nodify:KnotNode /></CompositeCollection></nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

3.4 StateNode控件

 这种类型的节点本身就是一个Connector,这意味着它将在交互时引发PendingConnection事件。由于它继承自Connector,你需要将Anchor属性和IsConnected绑定到相应的状态。(如果IsConnected设置为false,连接将不会更新)

<nodify:NodifyEditor><nodify:NodifyEditor.ItemsSource><CompositeCollection><nodify:StateNode Content="My node" /></CompositeCollection></nodify:NodifyEditor.ItemsSource>
</nodify:NodifyEditor>

节点的Content可以使用ContentTemplate进行自定义。

 4、连接

连接是由两个点之间创建的。SourceTarget依赖属性是System.Windows.Point类型,通常绑定到连接器的Anchor点。

4.1、基本连接

库中所有连接的基类是BaseConnection,它派生自Shape。在创建自定义连接时,可以不受任何限值地从BaseConnection派生。

命令Command
DisconnectCommand 及 DisconnectEvent当按住ALT点击连接时触发
SplitCommand 及 SplitEvent当双击连接时触发

连接方向Direction有两种值:

  • Forward

imageimage

  • Backward

imageimage

 SourceOffsetTargetOffsetOffsetMode一起使用,会控制与锚点的距离:

 连接还有一个Spacing属性,会使连接在一段距离后转折到沿着从SourceTarget点的方向:

  • 有间距:

image

  • 无间距:

image

ArrowSize设置为"0, 0"会移除箭头。

 4.2、线连接

一条从SourceTarget的直线。

4.3、电路连接

 有一个Angle依赖属性来控制转折的位置。角度以度为单位。

4.4、曲线连接

 SourceTarget之间的贝塞尔曲线。

 5、连接器

连接器通过引发PendingConnectionStartedEvent事件来创建预备连接。连接器具有一个必须绑定的Anchor依赖属性,以便在节点位置更改时实时更新它们之间的连接。IsConnected依赖属性必须设置为true,以接收Anchor更新。

按住ALT并点击连接器会触发DisconnectionCommand

5.1、NodeInput和NodeOutPut

NodeInputNodeOutput是带有HeaderConnector的实现,可以通过自定义HeaderTemplate来显示文本或输入框。它们还公开了一个ConnectorTemplate来自定义连接器本身。通常,它们与Node.InputConnectorTemplateNode.OutputConnectorTemplate一起使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/410054.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100128-批量获取视频音频时长添加到文件名中支持子孙文件夹下操作-UI

程序功使用环境▶适用的系统环境说明&#xff1a;win7以上64位win系统注意&#xff1a;win32位系统/mac系统需要额外定制▶使用期限&#xff1a;无需注册、不绑电脑、无时间限制▶如何安装&#xff1a;不需要安装程序功能说明▶子文件夹穿透&#xff1a;支持▶支持的文件格式&a…

MySQL集群技术详解

目录 一、MySQL在服务器中的部署方法 1.1 编译安装MySQL 1.2 部署MySQL 二、MySQL主从复制 2.1 配置master 2.2 配置slave 2.3 添加slave2 测试&#xff1a; 2.4 延迟复制 2.5 慢查询日志 2.6 MySQL的并行复制 2.7 MySQL主从复制原理剖析 2.8 架构缺陷 三、MySQL…

学习笔记——IP组播——IP组播基本概述

二、IP组播基本概述 IP组播技术有效地解决了单播和广播在点到多点应用中的问题。组播源只发送一份数据&#xff0c;数据在网络节点间被复制、分发&#xff08;PIM&#xff09;&#xff0c;且只发送给需要该信息的接收者。 1、前言 网络中存在各种各样的业务&#xff0c;从流…

EasyCVR视频汇聚平台革新播放体验:WebRTC协议赋能H.265视频流畅传输

随着科技的飞速发展和网络技术的不断革新&#xff0c;视频监控已经广泛应用于社会各个领域&#xff0c;成为现代安全管理的重要组成部分。在视频监控领域&#xff0c;视频编码技术的选择尤为重要&#xff0c;它不仅关系到视频的质量&#xff0c;还直接影响到视频的传输效率和兼…

企业参与制定行业标准的主要途径有哪些?需要具备哪些条件?

在当今竞争激烈的商业环境中&#xff0c;参与制定行业标准已成为企业提升竞争力、塑造行业地位的重要战略举措。然而&#xff0c;并非所有企业都有能力和资格参与这一重要的活动。要想在行业标准制定的舞台上发挥积极作用&#xff0c;企业需要具备一系列关键条件。 企业参与制…

mapstruct和lombok同时使用时,转换实体类时数据丢失

全局搜一下maps&#xff0c;找到你进行转换的方法 可以看到新建了TswCaseInfoPlus后直接返回了&#xff0c;说明TswCaseInfoPlus没有set方法&#xff0c;或者说编译后lombok没生效 在pom文件中&#xff0c;编译打包插件中将lombok&#xff0c;mapstruct&#xff0c;lombok-map…

3ds Max - 导出顶点色模型

很久之前的笔记&#xff0c;整理归档&#xff1b; 在3ds Max中&#xff0c;给模型添加VetexPaint修改器后&#xff0c;可以给模型&#xff08;顶点色通道R\G\B默认值为255\255\255&#xff09;刷不同颜色的顶点色&#xff08;默认为黑色&#xff0c;即让RGB通道都为0&#xff0…

PY信号和槽

知不足而奋进 望远山而前行 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 在使用PyQt进行图形用户界面&#xff08;GU…

jenkins发送html邮件配置步骤与注意事项?

jenkins发送html邮件如何实现&#xff1f;Jenkins的配置方法&#xff1f; 通过jenkins发送html邮件&#xff0c;开发团队可以及时获取构建状态的详细报告&#xff0c;从而快速响应问题&#xff0c;提高工作效率。AokSend将详细介绍jenkins发送html邮件的配置步骤与注意事项&am…

【实现100个unity特效之28】皮毛shader着色器 实现可以用动的毛茸茸毛绒绒效果

效果 文章目录 效果一、内置渲染管线下载支持几只着色器Basic 基本Attributes 属性Force 力Rim Color 轮辋颜色 二、URP下载几只毛发着色器实现的示例Shell 壳Fin 翅片Fur Polygon 毛发多边形Compare 比较Move 移动 完结 一、内置渲染管线 缺点是仅支持内置渲染管线。且无法毛…

各个版本jdk新特性

jdk8新特性 方法引用&#xff1a;方法引用允许直接通过方法的名称来引用已经存在的方法&#xff0c;简化了函数式接口的实现。默认方法&#xff08;Default Methods&#xff09;&#xff1a;默认方法允许在接口中定义具有默认实现的方法&#xff0c;以便接口的实现类可以继承该…

Linux基础知识(一、什么是Linux)

一、Linux之父——林纳斯本纳第克特托瓦兹&#xff08;Linus Benedict Torvalds&#xff09; Linux操作系统最初是在1991年10月份由芬兰赫尔辛基大学的在校生Linus Torvalds所发布,最初被发布的LINUX0.02版本因其高质量的代码与开放源代码&#xff0c;迅速引起了一大批黑客的加…

STL中的stack与queue

前言&#xff1a; stack与queue是STL中的容器适配器&#xff0c;而不是容器。何为适配器&#xff1f;给手机充电的充电器就是一种适配器&#xff0c;将高电压变成低电压。适配器是用来做转化的&#xff0c;不用来直接管理数据&#xff0c;而是在其他容器的基础上去封装转换。 …

【Cadence23】Cadence HDL原理图如何将两个不同的全局网络连接

【转载】Cadence Design Entry HDL 使用教程 【Cadence01】Cadence PCB Edit相对延迟与绝对延迟的显示问题 【Cadence02】Allegro引脚焊盘Pin设置为透明 【Cadence03】cadence不小心删掉钢网层怎么办&#xff1f; 【Cadence04】一般情况下Allegro PCB设计时的约束规则设置&a…

Linux驱动开发基础(中断)

所学来自百问网 目录 1. 嵌入式中断系统 2. 中断处理流程 3. 异常向量表 4. Linux系统对中断的处理 4.1 ARM 处理器程序运行的过程 4.2 保护现场 5. Linux 系统对中断处理的演进 5.1 硬件中断和软件中断 5.2 中断拆分(上半部和下半部) 5.2.1 tasklet 5.2.2 工作队列…

Autofac容器

IoC&#xff1a;注册、注入&#xff08;解析&#xff09;、生命周期 Autofac的基本使用 基本使用 需要在NuGet包安装Autofac---建议7.1.0版本 注册&#xff1a; 默认注册&#xff1a; // 容器的初始化 ContainerBuilder builder new ContainerBuilder(); // 注册需要解析…

K8S部署MySQL5.7的主从服务

mysql-slave-0是master mysql-slave-1是slave 当mysql写的时候&#xff0c;找headless service中的 mysql-slave-0.mysql57-slave-headless&#xff1b;当mysql读的时候&#xff0c;找clusterip service中的mysql57-slave-read读&#xff0c;实现读写分离。 statefulset维护两个…

Linux操作系统常见面试题

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 分享常见的操作系统…

原创~尚未发表!基于改进秃鹰算法的多区域微网经济优化调度程序代码!

前言 随着光伏、风电等分布式电源的发展&#xff0c;配电网的供电模式得以改变&#xff0c;解决了传统火力发电带来的能源匮乏及环境污染问题&#xff0c;但其发电的随机性及波动性对配电网的稳定运行造成一定影响。以多个微电网组成的微电网群可有效消纳分布式电源&#xff0…

Anthropic公开Claude AI系统提示词

&#x1f989; AI新闻 &#x1f680; Anthropic公开Claude AI系统提示词 摘要&#xff1a;Anthropic公司近日公开了Claude AI模型的系统提示词&#xff0c;旨在提高AI模型对人类指令的理解。系统提示词设定了对话背景和行为规则&#xff0c;通常是为了防止模型出现不良行为。…