1.mxgraph绘制好的图形保存到本地
2.保存的文件可以进行解析,恢复为mxgraph绘制的图形而且可以继续绘制
3.保存文件可为xml、png不限
mxgraph图形如何保存到本地以及从本地导入
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 小阮2018 2019-06-17 13:58关注
1.利用mxCodec模块进行编码生成xml文件可以保存到本地。
2.xml通过mxCodec解码可恢复graph(照理来说),但是我失败了,最后,按照循环方式获取xml节点,重新插入graph中解决。
以下代码为angular(部分代码):
exportGraph() {
const graph: mxgraph.mxGraph = this.editor['graph'];const enc: mxgraph.mxCodec = new mx.mxCodec();
const node = enc.encode(graph.getModel());
const xml = mx.mxUtils.getPrettyXml(node);
mx.mxUtils.popup(mx.mxUtils.getPrettyXml(node), true);
// confirm(xml);const downLink = document.createElement('a');
downLink.download = 'graph.xml';
// 字符内容转换为blod地址
const blob = new Blob([xml]);
downLink.href = URL.createObjectURL(blob);
// 链接插入到页面
document.body.appendChild(downLink);
downLink.click();
// 移除下载链接
document.body.removeChild(downLink);
}importGraph(e) {
const graph: mxgraph.mxGraph = this.editor['graph'];
const file = e.srcElement.files[0];
const path = window.URL.createObjectURL(file);const cells = mx.mxUtils.load(path).getDocumentElement().getElementsByTagName('mxCell') as Array;
const parent = graph.getDefaultParent();
for (let i = 2; i < cells.length; i++) {
const cellAttrs = cells[i].attributes;
if (cellAttrs.vertex) { // is Vertex
const vertexValue = cellAttrs.value ? cellAttrs.value.value : '';
// const vertexId = cellAttrs.id.value;
const geom = cells[i].children[0].attributes;
const xPos = Number(geom.x.value);
const yPos = Number(geom.y.value);
const height = Number(geom.height.value);
const width = Number(geom.width.value);
const style = cellAttrs.style.value;
console.log(style.length);
graph.insertVertex(parent, null, vertexValue, xPos, yPos, width, height, style);
}
}}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何让企业微信机器人实现消息汇总整合
- ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
- ¥15 如何用Python爬取各高校教师公开的教育和工作经历
- ¥15 TLE9879QXA40 电机驱动
- ¥20 对于工程问题的非线性数学模型进行线性化
- ¥15 Mirare PLUS 进行密钥认证?(详解)
- ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
- ¥20 想用ollama做一个自己的AI数据库
- ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
- ¥15 请问怎么才能复现这样的图呀