基于svg.js实现对图形的拖拽、选择和编辑操作(2)

基于svg.js实现对图形的拖拽、选择和编辑操作

/** * 绘制移动的矩形 */ //...省略代码 let currentDraw = this.currentDraw; if (!currentDraw) { this.currentDraw = this.drawGroup .rect(0, 0) .move(x, y) // 这里的xy表示矩形的位置 .fill(OcrSet.rect) .stroke(OcrSet.rectStroke) .attr({ id: id }); } else { let width = Math.abs(zx - x), height = Math.abs(zy - y), mx = Math.min(zx, x), my = Math.min(zy, y); // zx,zy表示移动的鼠标的位置 this.currentDraw.size(width, height).move(mx, my); } /** * 绘制多边形-过程 */ //...省略代码 let currentDraw = this.currentDraw; if (!currentDraw) { points.push([zx, zy]); // points表示当前多边形的点 this.currentDraw = this.drawGroup .polygon(points) .fill(OcrSet.polygo) .stroke(OcrSet.rectStroke) .attr({ id: id }); } else { points = this.currentDraw.array().value.slice(0); points.push([zx, zy]); this.currentDraw.plot(points); }

array():可以获取到多边形的点信息

3.4 图形选中拖拽事件 // 图形可拖拽 this.selectShape.draggable(); // 图形禁止拖拽 this.selectShape.draggable(false); // 图形选中并可放大缩小 this.selectShape.selectize(OcrSet.selectOpt).resize(); // 图形去除选中并禁止放大缩小 this.selectShape.selectize(false, { deepSelect: true }).resize("stop"); // 图形位置修改后的事件 this.selectShape.on("resizedone", function() { ... }); // 图形拖拽后的事件 this.selectShape.off("dragend").on("dragend", function(e) { ... });

图形拖拽:需引入 svg.draggable.js 插件(npm install svg.draggable.js -- save-dev),实现图形的拖拽

draggable(boolean):支持拖拽,当 boolean 是 false 的时候禁止拖拽;

dragend():拖拽后的事件

图形选择:需引入 svg.select.js 插件(npm install svg.select.js -- save-dev),实现图形的选择和放大缩小的操作

selectize():图形变成选中状态

resize(param):图形可放大缩小,当参数param是stop的时候,禁止放大缩小

resizedone():图形放大缩小后的操作

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/36929d36131e978fa44279dbd3079116.html