1

几周前,有人要求我升级一个基于非常旧版本的 MXGraph 库(2.4 版)的 Web 应用程序。该应用程序还集成了 'grapheditor' 一种演示应用程序,后来在 Diagramly 和 Draw.io 中发展)。最近我完成了比较有问题的步骤,从旧的“grapheditor”到 Draw.io 的转换,所以我现在能够打开所有以前的图表(保存为纯 XML),修改并一致地保存它们。好的,这是很好的部分。不好的一面是应用程序的“只读”部分,用户或多或少只能查看图表。此页面基于 mxClient.js,它通过以下代码呈现 xml 中描述的图形:

    var graph = new mxGraph(container);
    var diagram = mxUtils.parseXml(xml);
    var codec = new mxCodec(diagram);
    codec.decode(diagram.documentElement, graph.getModel());
    graph.fit();

将 MX 库升级到最新版本 (3.9.10) 相同的代码可以工作,但某些形状未正确呈现,它们显示为正方形而不是圆形、椭圆等。以下两个图像是这种不当行为的示例

draw.io 中的图表:

draw.io 中的图表

mxClient 渲染的相同图表:

mxClient 渲染的相同图表

经过一些尝试,我发现旧的 mxClient 能够完美地呈现相同的图形(就像 draw.io 一样),所以我认为我的代码或 mxGraph 安装/配置中一定有问题(或缺失)。

作为一种临时解决方法,我可以保留旧版本的 mxGraph,但显然我想使用新版本。有人可以给我一个提示吗?任何帮助将不胜感激。

4

1 回答 1

0

磁带形状不是核心 mxGraph 的一部分,它是 GraphEditor 示例的一部分,在附加形状 JavaScript中。

如果您查看椭圆的样式,它可能不是核心中的样式,很可能是 Shapes.js 中的另一个样式。

要么拉入 shape.js,要么使用 draw.io 中的查看器

于 2018-11-21T21:20:11.187 回答