Javascript Fabric js在加载Fabric.image.fromURL后旋转图像
我使用fabrics.image.fromURL加载了一个图像Javascript Fabric js在加载Fabric.image.fromURL后旋转图像,javascript,html5-canvas,fabricjs,Javascript,Html5 Canvas,Fabricjs,我使用fabrics.image.fromURL加载了一个图像 fabric.Image.fromURL($scope.image, function(oImg) { oImg.set({width: $scope.imageWidth, height: $scope.imageHeight, originX: 'left', originY: 'top', selectable: false}); ca
fabric.Image.fromURL($scope.image, function(oImg)
{
oImg.set({width: $scope.imageWidth, height: $scope.imageHeight, originX: 'left', originY: 'top', selectable: false});
canvas.add(oImg);
canvas.centerObject(oImg);
canvas.renderAll();
oImg.sendToBack();
});
我现在想做的是我在页面上有一个旋转按钮,他们可以在那里旋转这个图像。但是,在图像对象已经加载之后,我无法修改它。我试过:
oImg.rotate(90)
但是oImg现在还没有定义。有人在这方面运气好吗?首先,我建议使用.setAngle方法,而不是.rotate方法 但是你的问题的根源是你如何瞄准那个特定的目标 oImg变量被本地化为在画布上创建对象的函数。因此,只需将oImg设置为全局变量,就可以通过变量名将该对象作为目标
var rotateThisImage; /* Set this on a global scope outside of a function */
...
rotateThisImage = oImg; /* Set oImg to your new global variable */
...
rotateThisImage.setAngle(curAngle+15); /* Elsewhere in your code, on button click, set angle */
以下是一个例子:
另一种方法是仅旋转画布上的活动对象。但是,要使其工作,对象需要是可选择的,并且必须删除可选:false属性
canvas._activeObject
Canvas是Canvas本身的变量名,_activeObject是在Canvas上选择的任何对象
canvas.item(0)
下面是一个例子-请注意,在对象旋转之前,必须先选择对象。
另一种允许您保持可选性的方法:false属性是通过画布上的对象id选择对象
canvas.item(0)
项目0是画布上的第一个项目,在分层顺序中是最低的。如果画布上有5个对象,则最顶端的对象将是项4,因为索引从0开始
以下是此方法的一个示例:
谢谢,我实际上设置了rotateThisImage=oImg,这样我就可以在另一个函数中访问rotateThisImage JS Fiddle有一个错误:
rotateThisImage.getAngle不是函数
Fiddle已经更新。自4年前发布以来,FabricJS库似乎发生了很大的变化getAngle()
和setAngle()
似乎已被替换为仅angle