Javascript 缩放和旋转结构后,在画布内移动对象

Javascript 缩放和旋转结构后,在画布内移动对象,javascript,html,canvas,fabricjs,Javascript,Html,Canvas,Fabricjs,旋转/缩放画布边界时,我能够在画布边界内移动对象。请看下面的小提琴- 问题步骤: 将图像缩放到>画布宽度/高度。 问题1:尝试在任何方向移动obj仅1px,obj将立即转到另一个最终原因:移动事件 问题2:缩放图像后,对象的移动也是反向的。 我使用下面的代码来检查顶部的边界定位,类似于bot if(obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){ obj.top = Math.max(obj.t

旋转/缩放画布边界时,我能够在画布边界内移动对象。请看下面的小提琴-

问题步骤:

将图像缩放到>画布宽度/高度。 问题1:尝试在任何方向移动obj仅1px,obj将立即转到另一个最终原因:移动事件 问题2:缩放图像后,对象的移动也是反向的。 我使用下面的代码来检查顶部的边界定位,类似于bot

if(obj.getBoundingRect().top < 0 || obj.getBoundingRect().left < 0){
    obj.top = Math.max(obj.top, obj.top-obj.getBoundingRect().top);
    obj.left = Math.max(obj.left, obj.left-obj.getBoundingRect().left);
}

对于小提琴的代码中的注释

//如果对象太大,请忽略

在这种情况下,您似乎希望允许越过画布的边缘

如果是这样,您只需更改此行:

if(obj.currentHeight > obj.canvas.height || obj.currentWidth > obj.canvas.width) {
对于这一个:

if(obj.getBoundingRect().height > canvas.height || obj.getBoundingRect().width > obj.canvas.width) {
请注意,obj.currentHeight和obj.currentWidth都未定义


希望有帮助

当图像大于画布时,预期的行为是什么?我需要的是,假设我增加obj的宽度大于画布,并将obj向左/向右移动,obj应该像在我的示例中那样锁定在左/右边缘。但是当对象大于画布时,它已经通过了一条边缘。在这种情况下,你想锁定正好相反的一个,不是吗?如果用户在使对象变大的同时,使对象两侧溢出,会发生什么情况?只需尝试使对象比画布大并移动对象即可。我需要同样的行为,但要符合问题中提到的要点。