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哦,哎呀,我没有注意到链接哈哈。。。是的,我以前见过,但我正试图改变实际角点本身的行为。当前,角点均匀地缩放对象,我不希望这样,我希望它能够在角点处进行非均匀缩放。