几周前,有人要求我升级一个基于非常旧版本的 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 中的图表:
mxClient 渲染的相同图表:
经过一些尝试,我发现旧的 mxClient 能够完美地呈现相同的图形(就像 draw.io 一样),所以我认为我的代码或 mxGraph 安装/配置中一定有问题(或缺失)。
作为一种临时解决方法,我可以保留旧版本的 mxGraph,但显然我想使用新版本。有人可以给我一个提示吗?任何帮助将不胜感激。