FabricJS:始终在画布上居中对象
FabricJS: Always Center Object on Canvas
是否可以始终将对象居中放置在fabricjs画布上?
背景:我正在构建一个网络工具,可以使用fabricjs轻松创建复杂的动画。我希望能够将画布的宽度和高度都设置为100%。因此,我想把我所有的对象放在中心,并添加一个X/Y偏移。当我稍后调整画布的大小时,我可以使用X/Y偏移从中心重新调整对象。
有这样的内置功能吗?或者,我应该简单地向对象添加一个属性,如果正在调整画布的大小,请检查所有对象的该属性,并从新画布的中心重新调整对象的位置?
问候和感谢Robert
或者您可以像一样将对象居中
// add the image object
Canvas.add(oImg)
// set the object to be centered to the Canvas
Canvas.centerObject(oImg);
Canvas.setActiveObject(oImg);
Canvas.renderAll();
Fabric对象有以下居中方法:
obj.center(); // Centers object vertically and horizontally on canvas to which is was added last
obj.centerV(); // Centers object vertically on canvas to which it was added last
obj.centerH(); // Centers object horizontally on canvas to which it was added last
我在文档中没有看到任何关于偏移的内容。
以下内容可能适用于
var canvas = new fabric.Canvas('c');
$(window).resize(function(){
var w = $(window).width();
var h = $(window).height();
var center = {x:w / 2, y:h / 2);
canvas.setDimensions({width:w,height:h});
canvas.forEachObject(function(obj){
obj.set({
left : center.x + obj.offsetLeft,
top : center.y + + obj.offsetTop,
});
obj.setCoords();
});
// need to call calcOffset whenever the canvas resizes
canvas.calcOffset();
canvas.renderAll();
});
由于fabricjs 2.3.6,您可以使用viewportCenterObject
fabric_canvas.setZoom(10)
fabric_canvas.viewportCenterObject(obj)
fabric_canvas.renderAll()
https://github.com/fabricjs/fabric.js/pull/2021
相关文章:
- FabricJs-限制主对象内添加对象的移动区域
- FabricJS-组选择使对象在选择时处于最前面
- 在鼠标悬停时显示对象的边框(Fabricjs)
- FabricJS CurvedText对象(扩展)在更新间距和文本属性时未显示
- 无法选择使用fabricjs添加的对象
- 对象以编程方式移动后的 Fabricjs 在其新位置上不可选择
- Fabricjs-Can'不要在fabric.util.enlivenObjects之后选择对象
- 如何在 FabricJS 上缩放对象时停止控件边框填充增加
- fabricjs 中对象的上下文菜单
- 在 Fabricjs 中缩放对象时缺少模式质量
- FabricJS:对象:移动事件不会在用户选择多个对象时触发
- FabricJS 对象不相对于画布调整大小
- 将事件绑定到fabricJS中的对象
- 当缩放svg对象时,使用FabricJS将无法选择它
- fabricjs:长按时抖动画布上的对象
- 如何使用Fabricjs将画布对象重绘为更大的画布
- FabricJS:始终在画布上居中对象
- 在FabricJS中绘图后无法选择对象
- 在FabricJs中使用localStorage对象重新绘制画布
- 无法向对象添加事件侦听器.fabricjs