通过异步序列化提高图表性能 Diagramming for WPF

news2024/12/23 18:52:25

通过异步序列化提高图表性能

2023 年 12 月 6 日
MindFusion.Diagramming for WPF 4.0.0 添加了异步加载和保存文件的功能,从而提高了响应能力。

MindFusion.Diagramming for WPF 提供了一个全面的工具集,用于创建各种图表,包括组织结构图、图形、类层次结构和族树。它提供了广泛的外观和行为自定义选项,以及保存/加载选项和多种自动布局。

4.0.0 版本添加了对异步序列化的支持,这意味着现在可以异步保存和加载文件。这允许用户在加载或保存数据时与应用程序交互,使其感觉更加灵敏

MindFusion.Diagramming for WPF V4.0.0

发布日期:2023 年 11 月 30 日

V4.0.0更新

特征
  • 模型/视图分离- 图现在被视为模型类,并且必须显示在 DiagramView 控件内。DiagramView 包含一个内置的 ScrollViewer,因此将应用程序更新到此版本应该是用新的 DiagramView 替换旧的 ScrollViewer,并使用视图对象的缩放、滚动和行为属性而不是图表属性。
  • UI 虚拟化- DiagramView 和 ContainerNode 现在仅为当前在各自视口中可见的图表项目将 UI 元素添加到 WPF 可视化树中。这应该可以提高图表的渲染/刷新速度。
  • 空间索引- 您现在可以设置图表“EnableSpatialIndex”属性来创建项目位置索引,以实现更快的命中测试和视口裁剪查询。当与 UI 虚拟化相结合时,这将大大提高包含数万或更多项目的图表的用户交互和渲染速度。
  • 多点触摸支持-DiagramView 现在可以处理 WPF 触摸消息并实现可通过以下属性控制的多点触摸手势:
    • 如果启用 MultiTouchZoom 属性(默认),则可以使用两点触摸捏合/轻拂手势来缩放或平移视图。
    • 如果启用 MultiTouchModify 属性(默认),则可以使用两点触摸捏合/轻拂手势来移动、缩放和旋转图表节点。
    • 如果禁用 MultiTouchZoom 属性,则每次触摸都会绘制与当前行为相对应的图表项。
    • 如果禁用 MultiTouchModify 属性,则从节点开始的每次触摸都会绘制一个图表链接。
    • 后一种模式可用于协作白板/课堂场景。
    • 将 MultiTouchDraw 设置为 false 可防止同时绘制多个项目,同时保持启用其他多点触控手势。
    • 如果启用 MultiTouchDraw(默认),则在 TouchGestureInterval 时间和 TouchGestureDistance 距离内添加第二次触摸仍会取消第一次触摸绘制,并启动多点触摸手势。
    • 附加的Diagram.TouchHitDistance 属性使您可以更轻松地在触摸屏上抓取调整手柄,而无需增加AdjustmentHandlesSize 值。
  • 异步序列化- 现在可以异步保存和加载文件。
  • 各种各样的
    • TabbedDiagramView 中添加了 PageMoved 和 PageRenaming 事件。
    • 现在可以使用通过 HeadBrush、BaseBrush 和 IntermediateBrush 设置的不同画笔来填充不同的箭头形状。
    • 添加了DiagramDocument JSON 序列化方法。
    • 现在,您可以通过处理 ContainerChildAdding 和 ContainerChildRemoving 事件有选择地阻止向容器添加子节点或从容器中删除子节点。
    • FoldIconSize 属性已添加到 ContainerNode。
    • 添加了图和图文档的克隆方法,该方法返回图/文档及其项目的副本。
    • 现在,您可以设置 GridPatternHatch 和 GridPatternThreshold,以在低缩放级别将对齐网格替换为填充图案,从而加快绘制速度。
    • 提高了导出的 SVG 文本中基线对齐的精度。
    • SvgNode 解析器现在支持 SVG 元素的“class”属性中的多个类名称。
  • API变更
    • 图现在应该托管在DiagramView 内部。目前它仍然可以用作独立控件,但对此的支持将在未来版本中删除。
    • 设置DiagramView而不是Diagram的Behavior、ZoomFactor、Scroll*、*ButtonActions属性。
    • 不要将“概述”的“文档”属性设置为“图表”实例,而是设置其“图表视图”属性。
    • 不要将 Ruler 的 Document 属性设置为图表实例,而是设置其 DiagramView 属性。后者现在是默认的内容属性。如果您仍然需要在 Xaml 中显示 Ruler 内的独立图表,则必须通过 <diag:Ruler.Document> 标记显式设置它。
    • 为了与其他 MindFusion 图表库保持一致,DiagramNodeAdapter 已重命名为 ControlNode。其 UIElement 属性已重命名为 Control。
修复
  • 各种各样的
    • 修复了 ShapeNode.Clone 不复制 ImagePadding 值的问题。
    • 修复了在启用 Windows 显示缩放的情况下调用 CreateImage 时的结果。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为数通---配置本地端口镜像示例(1:1)

镜像概念 定义 镜像是指将指定源的报文复制一份到目的端口。指定源被称为镜像源&#xff0c;目的端口被称为观察端口&#xff0c;复制的报文被称为镜像报文。 镜像可以在不影响设备对原始报文正常处理的情况下&#xff0c;将其复制一份&#xff0c;并通过观察端口发送给监控…

IntelliJ IDEA无公网远程连接Windows本地Mysql数据库提高开发效率

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…

每日一练【查找总价格为目标值的两个商品】

一、题目描述 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况&#xff0c;返回任一结果即可。 示例 1&#xff1a; 输入&#xff1a;price [3, 9, 12, 15], target 18 输出&#xff1a;[3,15] …

Pytorch深度强化学习1-6:详解时序差分强化学习(SARSA、Q-Learning算法)

目录 0 专栏介绍1 时序差分强化学习2 策略评估原理3 策略改进原理3.1 SARSA算法3.2 Q-Learning算法 0 专栏介绍 本专栏重点介绍强化学习技术的数学原理&#xff0c;并且采用Pytorch框架对常见的强化学习算法、案例进行实现&#xff0c;帮助读者理解并快速上手开发。同时&#…

摄像机镜头,家庭监控云台等安防监控系统镜头选型分析,低噪声,低振动,多通道

安防镜头步进驱动选用型号 GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208 GC6150 GC6151 GC6152 GC6125 GC6236采用5V的镜头驱动 。其中GC6107 C6109 GC6209 GC6119 GC6129 GC6139 GC6208关键特性两通道&#xff0c;256细分&#xff0c;低噪&#xff0c;内部和外部时钟…

【算法系列篇】递归、搜索和回溯(二)

文章目录 前言1. 两两交换链表中的节点1.1 题目要求1.2 做题思路1.3 代码实现 2. Pow(X,N)2.1 题目要求2.2 做题思路2.3 代码实现 3. 计算布尔二叉树的值3.1 题目要求3.2 做题思路3.3 代码实现 4. 求根节点到叶结点数字之和4.1 题目要求4.2 做题思路4.3 代码实现 前言 前面为大…

解锁数据安全秘诀:医药企业选择上海迅软DSE,防范泄密威胁!

随着数字化和信息化程度的提高&#xff0c;医药企业存储了大量的患者医疗记录、药品研发数据、临床试验数据以及财务信息。但由于医药行业的特殊性和敏感性&#xff0c;其数据的变现价值非常高&#xff0c;在各种利益的非法驱动下&#xff0c;医药行业早已成为数据泄露的重灾区…

想知道修改图片dpi会影响清晰度吗?点击这里找答案

很多人都对图片dpi分辨率有不少疑问&#xff0c;比如dpi对图片清晰的影响&#xff0c;还有哪些地方需要修改图片dpi&#xff1f;其实dpi是指每英寸墨点的数量。对同一张图像来说,一般使用300dpi比使用72dpi打印出来的效果要清晰很多 &#xff0c;一般只有在打印照片或者上传证件…

Windows系统Java开发环境安装

总结一下Java软件开发工程师常见的环境的安装&#xff0c;仅限Windows环境。 以下下载链接均来自官网&#xff0c;网络条件自己克服。 目录 1. JDKJDK Oracle 官网下载地址配置系统环境变量 2. Mavenapache maven 官网地址本地仓库和中央仓库配置配置系统环境变量 3. GitGit 官…

java学习part42反射

187-反射机制-反射的理解与使用举例_哔哩哔哩_bilibili

Python实现获取b站视频的弹幕内容

前言 本文是该专栏的第39篇,后面会持续分享python的各种干货知识,值得关注。 在本专栏之前,有详细介绍使用python增加b站视频的播放量方法,感兴趣的同学可往前翻阅《Python-增加b站视频播放量》。而本文,笔者再来单独的详细介绍,通过python来获取b站视频的弹幕内容。如下…

应用程序清理和卸载缓存清理软件:App Cleaner Uninstaller Pro Mac中文

App Cleaner & Uninstaller Pro是一款专为Mac电脑设计的应用程序清理和卸载工具。它帮助用户彻底删除不需要的应用程序、插件和残留文件&#xff0c;从而有效释放磁盘空间并提高系统性能。其强大的搜索功能和批量卸载特性使得管理应用程序变得轻而易举。同时&#xff0c;用…

PETS渗透测试标准流程

PTES组织 PETS渗透测试标准流程原文 http://www.pentest-standard.org/index.php/Main_Page学习一下渗透测试国际规范流程 英文不好的师傅可以使用浏览器插件沙拉查词或者整页翻译。 浏览器扩展中添加划词翻译 非常好用

建行账单导出的手工操作

文章目录 建行账单导出的手工操作概述笔记END 建行账单导出的手工操作 概述 自己的电商账单分析程序初步搞定. 支付宝/微信/京东导出的账单都是csv格式. 我开始做的时候, 建行的账单选的是xls(旧版excel)格式. 没注意看. 程序中用的excel库操作, 只能处理.xlsx格式(新版exce…

电气小课堂:智能电表怎么选

随着科学技术的发展&#xff0c;工业和家用电表的功能在不断地改进。用电管理和计费方式也在不断的改进。普通的电表只能计量用电数据&#xff0c;而带有复费率的电表可以根据不同用电时段的电价进行计费&#xff0c;可以更加准确地反映用户的用电情况&#xff0c;同时也可以帮…

成都工业学院Web技术基础(WEB)实验二:HTML5表格、表单标签的使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考&#xff0c;前端变化比较大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一样 3、图片和文字仅为示例&#xff0c;需要自行替换 4、如果代码不满足你的要求&#xff0c;请寻求其他的…

Windows 安全基础——NetBIOS篇

Windows 安全基础——NetBIOS篇 1. NetBIOS简介 NetBIOS&#xff08;Network Basic Input/Output System, 网络基本输入输出系统&#xff09;是一种接入服务网络的接口标准。主机系统通过WINS服务、广播及lmhosts文件多种模式&#xff0c;把NetBIOS名解析对应的IP地址&#xf…

ubuntu修改系统默认启动的内核

一、问题和解决办法 1、要解决的问题 希望修改系统more进入的内核&#xff0c;比如下图中当前进入到了88&#xff0c;希望进入58 2、第一步&#xff1a;查看系统的内核版本有哪些以及顺序 大致分为2种情况&#xff0c;只有一级菜单&#xff0c;所有内核顺序排列&#xff1b;…

centos7中的计划任务

一次调度执行-----at 安装&#xff1a; [rootzaotounan ~]# yum -y install at ​ 启动&#xff1a; [rootzaotounan ~]# systemctl start atd ​ 开机自启动&#xff1a; [rootzaotounan ~]# systemctl enbale atd ​ 语法&#xff1a; at <时间规格> 时间规格参数&…

Chrome浏览器中访问http会自动跳转https下,导致请求和文件不能正常访问

网上查了很多解决方案&#xff0c;例如清楚缓存等等其他方法&#xff0c;都不能解决该问题 例如&#xff1a; 地址栏输入&#xff1a; chrome://net-internals/#hsts找到底部Delete domain security policies一栏&#xff0c;输入想处理的域名&#xff0c;点击delete。 搞定了…