我最近开始使用fabricjs,我对组有疑问。当画布调整大小时,我想将所有对象(许多)居中。所以我决定在我的画布中构建一个包含所有对象的组并将其居中。
然而,为了做到这一点,我必须:
一个复杂的过程,最重要的是,我的对象失去了单独操作的可能性。
我想知道是否可以操作组而不在画布中添加它?
答案 0 :(得分:0)
你需要这个小组吗?或者您只是创建它们以使对象居中?如果没有,您可以对要在屏幕中居中的每个画布对象使用object.center()
。
canvas.forEachObject(function (o) {
o.center();
});
答案 1 :(得分:0)
此代码应与fabric 2.0 beta一起使用。 版本1.7.x也可以使用类似的代码,您可以使用activeGroup逻辑从中创建。
您可能想要做的是:
// After the canvas resize:
// get all Objects:
var objects = canvas.getObjects();
// create a multiselection
var selection = new fabric.ActiveSelection(objects, { canvas: canvas });
// now get size of this selection:
var width = selection.width;
var height = selection.height;
// scale the selection accordingly
var scale = ( find the right scale value, probably canvas.width/width or canvas.height/height. The biggest or smaller of them )
selection.scale(scale);
// center the selection in the canvas
selection.center();
// destroy the selection
selection.destroy();
这应该有效。