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

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

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.hqwc.cn/news/264825.html

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

相关文章

【概率方法】MCMC 之 Gibbs 采样

上一篇文章讲到&#xff0c;MCMC 中的 HM 算法&#xff0c;它可以解决拒绝采样效率低的问题&#xff0c;但是实际上&#xff0c;当维度高的时候 HM 算法还是在同时处理多个维度&#xff0c;以两个变量 x [ x , y ] \mathbf{x} [x,y] x[x,y] 来说&#xff0c;也就是同时从联合…

机器学习 | Python贝叶斯超参数优化模型答疑

机器学习 | Python贝叶斯超参数优化模型答疑 目录 机器学习 | Python贝叶斯超参数优化模型答疑问题汇总问题1答疑问题2答疑问题3答疑问题汇总 问题1:想问一下贝叶斯优化是什么? 问题2:为什么使用贝叶斯优化? 问题3:如何实现? 问题1答疑 超参数优化在大多数机器学习流水线…

[GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练

前言 OpenAI的创始人之一,大神Andrej Karpthy刚在微软Build 2023开发者大会上做了专题演讲:State of GPT(GPT的现状)。 他详细介绍了如何从GPT基础模型一直训练出ChatGPT这样的助手模型(assistant model)。作者不曾在其他公开视频里看过类似的内容,这或许是OpenAI官方…

Project Euler 865 Triplicate Numbers(线性dp)

题目 能通过每次消除3个一样的数字&#xff0c;最终把数字消成空的数字是合法的&#xff0c; 求串长度不超过n的&#xff0c;没有前导0的数字中&#xff0c;合法的数字的个数 n10000&#xff0c;答案对998244353取模&#xff0c;只需要输出数字 思路来源 乱搞AC 题解 暴力…

MacBook电脑内存容量小根本不够用?如何一键解决?

得益于M1系列芯片的强势表现&#xff0c;很多朋友都换用了MacBook&#xff0c;首次接触到了macOS系统。但出乎意料的是&#xff0c;很多人就开始受罪了……明明这么出色的硬件&#xff0c;为何到处都不顺手呢&#xff1f;尤其是容量&#xff0c;MacBook相比同价位的Windows笔记…

在 Qt Creator 中编写 Doxygen 风格的注释

2023年12月10日&#xff0c;周日上午 如何生成Doxygen 风格的注释 在需要Doxygen 风格注释的函数上方输入 /**&#xff0c;然后按下 Enter 键。Qt Creator 将自动为你生成一个注释模板。 输入&#xff0c;Qt Creator会自动帮你补全Doxygen标签 不得不说&#xff0c;写了Doxyge…

江科大 STM32入门教程 P14 定时中断和定时器外部时钟

1 通用定时器中断的初始化&#xff08;Time2&#xff09; 1.1 开启RCC的TimxCLK时钟, 由于Time2是由APB1总线的外设控制的 RccAPB1PeriphClockCmd(RCC_APB1PeriPh_TIM2,ENABLE);//使能APB1总线1.2 选择时基单元时钟 选择时基单元内部时钟 TIM_InteralClockConfig(IIM2);//内…

openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup

文章目录 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup150.1 背景信息150.2 前提条件150.3 语法150.4 参数说明150.5 示例 openGauss学习笔记-150 openGauss 数据库运维-备份与恢复-物理备份与恢复之gs_backup 150.1 背景信息 openGaus…

alpine linux 之嵌入式搭建

目录 序启动修改源安装 openssh设置开机网络 ip参考 序 最近发现了 alpine linux 这个文件系统&#xff0c;这是一个基于 musl libc 和 busybox 的面向安全的轻量级 Linux 发行版。 下载了他的文件系统&#xff0c;只有 3M 多的压缩包&#xff0c;非常适合嵌入式系统。 地址…

037.Python面向对象_关于抽象类和抽象方法

我 的 个 人 主 页&#xff1a;&#x1f449;&#x1f449; 失心疯的个人主页 &#x1f448;&#x1f448; 入 门 教 程 推 荐 &#xff1a;&#x1f449;&#x1f449; Python零基础入门教程合集 &#x1f448;&#x1f448; 虚 拟 环 境 搭 建 &#xff1a;&#x1f449;&…

MIT线性代数笔记-第28讲-正定矩阵,最小值

目录 28.正定矩阵&#xff0c;最小值打赏 28.正定矩阵&#xff0c;最小值 由第 26 26 26讲的末尾可知在矩阵为实对称矩阵时&#xff0c;正定矩阵有以下四种判定方法&#xff08;都是充要条件&#xff09;&#xff1a; 所有特征值都为正左上角所有 k k k阶子矩阵行列式都为正&…

Linux 基础IO

文章目录 前言基础IO定义系统IO接口文件描述符重定向原理缓冲区刷新 前言 要知道每个函数/接口的全部参数和返回值建议去官网或者直接在Linux的man手册中查&#xff0c;这不是复制粘贴函数用法的文章。 C语言文件读写介绍链接 基础IO定义 IO是Input/Output的缩写&#xff0c…