【发布时间】:2018-07-28 21:40:55
【问题描述】:
我有一个fabricjs 多边形,它的顶点上有fabric js 圆。 我试图通过拖动修改多边形来移动圆圈,为此我尝试使用这篇文章的建议:Here
并做了一些小改动(因为我不能做 canvas.clear(),因为我的画布包含背景图像):
这是我的代码。
fabricPoly.on('modified', function () {
const matrix = this.calcTransformMatrix();
const transformedPoints = this.get('points')
.map(function (p) {
return new fabric.Point(p.x - fabricPoly.minX - fabricPoly.width / 2, p.y - fabricPoly.minY - fabricPoly.height / 2);
})
.map(function (p) {
return fabric.util.transformPoint(p, matrix);
});
const circles = transformedPoints.map(function (p, i) {
const currCircleStyle = Object.assign({}, {
radius: 10,
fill: 'black',
hasRotatingPoint: false,
hasControls: false,
selectable: true,
originX: 'center',
originY: 'center',
hasBorders: false
});
currCircleStyle['index'] = i;
currCircleStyle['left'] = p.x;
currCircleStyle['top'] = p.y;
return new fabric.Circle(currCircleStyle);
});
self.fabricList.slice(1).forEach(e => { // self.fabricList[0] is the polygon, and the rest are former circles
this.canvas.remove(e);
});
circles.forEach((e, i) => {
self.canvasRef.add(e);
});
this.points = transformedPoints;
self.canvasRef.renderAll();
});
但是,在转换完成后,canvas.renderAll() 被击中,多边形似乎移动得更远,它被拖动,在相同的方向。
可能是什么原因?
【问题讨论】:
-
你用的是哪个版本??
-
面料 js 1.7.22,画布 1.6.9
标签: fabricjs