通过异步序列化提高图表性能
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 时的结果。