Javascript 如何在fabric js上的拐角处启用非均匀缩放
如果使用中上、中左等控制点,则可以在该轴上缩放对象。但是,如果使用角点,则对象始终均匀缩放。有没有办法禁用拐角控制点上的均匀/比例缩放?解决方案是在Javascript 如何在fabric js上的拐角处启用非均匀缩放,javascript,fabricjs,Javascript,Fabricjs,如果使用中上、中左等控制点,则可以在该轴上缩放对象。但是,如果使用角点,则对象始终均匀缩放。有没有办法禁用拐角控制点上的均匀/比例缩放?解决方案是在fabric.Canvas实例上将uniScaleTransform设置为true。在对象变换一节中只提到一次 自1.0版以来,Fabric中还提供了许多其他与转换相关的属性。其中之一是“单尺度变换”。默认为false,可用于启用对象的非均匀缩放;换句话说,它允许在通过角点拖动时更改对象的比例 您可以在实例化期间设置标志: var fabric =
fabric.Canvas
实例上将uniScaleTransform
设置为true
。在对象变换一节中只提到一次
自1.0版以来,Fabric中还提供了许多其他与转换相关的属性。其中之一是“单尺度变换”。默认为false
,可用于启用对象的非均匀缩放;换句话说,它允许在通过角点拖动时更改对象的比例
您可以在实例化期间设置标志:
var fabric = new fabric.Canvas(canvasEl, {
// ...
uniScaleTransform: true
});
或稍后更改:
fabric.uniScaleTransform = true;
对于具有锁定Uniscaling
的对象,该标志将被忽略
相关源代码:
_onScale: function(e, transform, x, y) {
// rotate object only if shift key is not pressed
// and if it is not a group we are transforming
if ((e.shiftKey || this.uniScaleTransform) && !transform.target.get('lockUniScaling')) {
transform.currentAction = 'scale';
this._scaleObject(x, y);
}
else {
// Switch from a normal resize to proportional
if (!transform.reset && transform.currentAction === 'scale') {
this._resetCurrentTransform(e, transform.target);
}
transform.currentAction = 'scaleEqually';
this._scaleObject(x, y, 'equally');
}
},
你查过了吗?@Athafoud你什么意思?我目前正在开发一个webapp,但还没有找到任何关于控制点不同行为的明显文档。该问题的答案(参见链接)显示了如何禁用缩放点,以及如何更改角点。我在问你是否试过这些。@Athafoud哦,哎呀,我没有注意到链接哈哈。。。是的,我以前见过,但我正试图改变实际角点本身的行为。当前,角点均匀地缩放对象,我不希望这样,我希望它能够在角点处进行非均匀缩放。