从中心缩放图像(fabricjs)
Scaling image from the center (fabricjs)
我在设置 Image 实例时尝试使用 centeredScaling: true
选项缩放图像。我有一个 Circle 对象,它是一个"上"的滑块,应该是比例尺。
下面是示例:http://jsfiddle.net/hellatan/tk1qs8ty/
几件事:1.它不会从中心缩放2. Circle 对象的起点没有正确关联正确缩放图像(不过,我猜我必须为此调整一些数学)
任何人都知道我做错了什么(主要是#1,#2也将是一个额外的信息)。
不要介意代码的草率=)
尝试将 x 和 y 的
原点设置为居中,并调整图像的初始 x 和 y
imgInstance.set({
scaleY: imgH / origH,
scaleX: imgW / origW,
originX: "center",
originY: "center"
});
我见过一个黑客,基本上它在包装器中将点转换为中心和从中心进行缩放/旋转。
小提琴:http://jsfiddle.net/ywu45fpd/
转换点的功能
fabric.Object.prototype.setOriginToCenter = function () {
this._originalOriginX = this.originX;
this._originalOriginY = this.originY;
var center = this.getCenterPoint();
this.set({
originX: 'center',
originY: 'center',
left: center.x,
top: center.y
});
};
fabric.Object.prototype.setCenterToOrigin = function () {
var originPoint = this.translateToOriginPoint(
this.getCenterPoint(),
this._originalOriginX,
this._originalOriginY);
this.set({
originX: this._originalOriginX,
originY: this._originalOriginY,
left: originPoint.x,
top: originPoint.y
});
};
canvas
上的新方法:
fabric.util.object.extend(fabric.Canvas.prototype, {
_scale: function(e, target, value) {
var scale = value,
needsOriginRestore = false;
if ((target.originX !== 'center' || target.originY !== 'center') && target.centeredRotation) {
target.setOriginToCenter(target);
needsOriginRestore = true;
}
target.animate({ scaleX: scale, scaleY: scale }, {
onChange: canvas.renderAll.bind(canvas),
easing: fabric.util.ease.easeOutQuad,
onComplete: function() {
if (needsOriginRestore) {
target.setCenterToOrigin(target);
}
target.setCoords();
},
})
canvas.renderAll();
},
});
请参阅小提琴上的mouse:up
用法(基本上canvas._scale(e, target, 2)
)
可以使用相同的包装机进行旋转。
第一步,我们在调用图像中心后添加比例。然后比例将是中心:
imgInstance.scale(my_value).center().setCoords()
相关文章:
- 如何在fabricjs中嵌入图像base64将画布转换为SVG
- 调整Fabricjs的背景图像大小
- 如何使用fabricjs在图像中插入填充颜色
- FabricJS将图像添加到组会导致奇怪的控制行为
- 如何使用fabricjs从HTMlL5画布中的本地硬盘驱动器上传图像文件
- 在画布 FabricJS 中上传背景图像
- 使用 FabricJS 将图案添加到 png 图像(在画布中)
- 从中心缩放图像(fabricjs)
- 如何在上传到画布后操作图像(FabricJS)
- 在导出图像之前隐藏FabricJS中的背景
- Camanjs vs Fabricjs - 哪一个主要用于图像编辑和操作
- 如何在fabricjs中保留图像的位置
- 在fabricjs中,Base64图像数据无法使用loadfromJSON
- fabricjs赢得't导出字符串后导入背景图像
- 如何在fabricjs中限制矩形大小调整/移动到图像外部
- 在fabricjs中放大图像后无法保留圆的位置
- Fabricjs上传图像后调整大小
- 使用FabricJS循环中的图像
- 图像剪贴到路径与FabricJS
- 关闭fabricjs图像对象的缓存