// 1. 编写图形绘画函数 // 其中,calculative.worldRect为canvas的世界坐标。更多信息,参考 “架构” - “概要” 和 Pen 相关文档 // 形参 ctx 仅仅在 downloadSvg 时有值 function mytriangle(pen, ctx) { const path = !ctx ? new Path2D() : ctx; const { x, y, width, height } = pen.calculative.worldRect; path.moveTo(x + width / 2, y); path.lineTo(x + width, y + height); path.lineTo(x, y + height); path.lineTo(x + width / 2, y); path.closePath(); if (path instanceof Path2D) return path; } // 2. 如果需要,编写锚点函数。通常,可以使用默认锚点,然后通过快捷键动态添加锚点 // 注意,锚点左边为相对宽高的百分比小数(0-1之间的小数) function mytriangleAnchors(pen) { const anchors = []; anchors.push({ id: '0', penId: pen.id, x: 0.5, y: 0, }); anchors.push({ id: '1', penId: pen.id, x: 1, y: 1, }); anchors.push({ id: '2', penId: pen.id, x: 0, y: 1, }); pen.anchors = anchors; } // 需要时打开 if (false) { window.myCharts = [ { name: '我的图形库文件夹名称', list: [ { image: '/img/logo.png', name: '自定义图形', penFn: mytriangle, anchorsFn: mytriangleAnchors, // 可以不需要,使用缺省锚点 data: { width: 100, height: 100, }, }, ], show: true, }, ]; } function beforeSave(data) { // 自己的保存业务逻辑 const query = window.location.search.substring(1).split('&'); const obj = {}; for (let i = 0; i < query.length; i++) { const el = query[i]; const kvPairs = el.split('='); obj[kvPairs[0]] = kvPairs[1]; } if (obj.eqpickey) { if (!data.data) { data.data = {}; } data.data.eqpickey = obj.eqpickey; } return true; } window.beforeSaveMeta2d = beforeSave;