FabricJS 更新边界框
FabricJS Update Bounding Box
我无法在平移后更新 canvas 的边界框。我已尝试 requestRenderAll
并重置每个对象的坐标,但边界框保持在同一位置。
我应该调用其他函数吗?
我尝试过的事情:
if (!pausePanning && e.self.x && e.self.y && e.e.type) {
currentX = e.self.x;
currentY = e.self.y;
xChange = currentX - panX;
yChange = currentY - panY;
if( (Math.abs(xChange) <= 100) &&
(Math.abs(yChange) <= 100) ) {
var delta = new fabric.Point(xChange, yChange);
canvas.relativePan(delta);
}
panX = e.self.x;
panY = e.self.y;
// attempting to redraw bounding
canvas.getObjects().forEach(function(o) {
o.setCoords();
});
// this also doesn't work
canvas.requestRenderAll();
}
}
结束 filing a ticket 并收到回复;问题是您需要在平移或缩放后 select 项目时指定更新的 canvas。
一个例子,如果你的 canvas 被命名为 canvas
变量:
var sel = new fabric.ActiveSelection(selection, { canvas: canvas });
canvas.setActiveObject(sel).requestRenderAll();
还有一个 jsfiddle 显示 zoom/panning 更新后的 selection。
我无法在平移后更新 canvas 的边界框。我已尝试 requestRenderAll
并重置每个对象的坐标,但边界框保持在同一位置。
我应该调用其他函数吗?
我尝试过的事情:
if (!pausePanning && e.self.x && e.self.y && e.e.type) {
currentX = e.self.x;
currentY = e.self.y;
xChange = currentX - panX;
yChange = currentY - panY;
if( (Math.abs(xChange) <= 100) &&
(Math.abs(yChange) <= 100) ) {
var delta = new fabric.Point(xChange, yChange);
canvas.relativePan(delta);
}
panX = e.self.x;
panY = e.self.y;
// attempting to redraw bounding
canvas.getObjects().forEach(function(o) {
o.setCoords();
});
// this also doesn't work
canvas.requestRenderAll();
}
}
结束 filing a ticket 并收到回复;问题是您需要在平移或缩放后 select 项目时指定更新的 canvas。
一个例子,如果你的 canvas 被命名为 canvas
变量:
var sel = new fabric.ActiveSelection(selection, { canvas: canvas });
canvas.setActiveObject(sel).requestRenderAll();
还有一个 jsfiddle 显示 zoom/panning 更新后的 selection。