mxClient 将不同的形状都呈现为正方形

mxClient renders different shapes all as squares

几周前,有人要求我升级一个基于非常旧版本的 MXGraph 库(2.4 版)的 Web 应用程序。该应用程序还集成了 'grapheditor' 一种后来在 Diagramly 中发展起来的演示应用程序 然后在 Draw.io)。最近我完成了更有问题的步骤,从旧的“grapheditor”到 Draw.io 的过渡,所以我现在可以打开所有以前的图表(保存为普通 XML),修改并一致地保存它们。 好的,这是很好的部分。不好的一面是应用程序的 'read-only' 部分,用户或多或少只能查看图表。 此页面基于 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 installation/configuration.

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

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

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

要么拉入 shapes.js,要么使用 viewer in draw.io.