几个星期前,我被要求基于非常老版本的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),可以使用相同的代码,但是某些形状不能正确呈现,它们显示为正方形而不是正方形 圆形,椭圆形等。以下两个图片是这种不当行为的示例
same graph rendered by mxClient
经过一番尝试,我发现旧的mxClient能够完美地渲染同一张图(就像draw.io一样),因此我认为我的代码或mxGraph安装/配置中肯定有错误(或丢失)。 作为一种临时的解决方法,我可以保留旧版本的mxGraph,但显然我想使用新版本。 有人可以给我一个提示吗?任何帮助将不胜感激。 谢谢!
答案 0 :(得分:0)
磁带形状不是核心mxGraph的一部分,它是GraphEditor示例的一部分,在附加的shapes JavaScript中。
如果您查看椭圆的样式,它可能不是核心样式,很可能是Shapes.js的另一个样式。
要么拉入shapes.js,要么使用viewer in draw.io。