如果 Fabric.js 中的形状,如何知道某人是否正在调整大小以使其变小或变大

How to know whether someone is resizing to make it smaller or bigger in case of shapes in Fabric.js

我正在研究 Fabricjs 库,并希望在用户调整大小以使矩形(任何形状)变小或变大时进行验证。

表示当用户调整大小以使其变小时调用某个函数,当用户调整大小以增加大小时调用另一个函数。

在 Fabricjs 中可以吗?

您可以使用 fabric 的 canvas.on() 方法来附加 event listeners

您要找的是'object:scaling''object:resizing'
然后你只需要查看对象的 scaleXscaleYwidthheight 属性就可以知道它是在增加还是在减少。

var canvas = new fabric.Canvas('c');

// create a rectangle object
var rect = new fabric.Rect({
  left: 100,
  top: 100,
  fill: 'red',
  width: 20,
  height: 20
});
// one listener for the scale event (could be resize)
function scaleListener(e) {
  // get the object being rescaled
  var targ = e.target;
  // check if we the scale was bigger than the new one
  if (targ.scaleX > (targ.lastScaleX || 1) || targ.scaleY > (targ.lastScaleY || 1)) {
    // it was
    bigger();
  } else {
    // it wasn't
    smaller();
  }
  // save the current scale as the last one in the object itself
  targ.lastScaleX = targ.scaleX;
  targ.lastScaleY = targ.scaleY;
};

function bigger() {
  rect.fill = 'blue';
}

function smaller() {
    rect.fill = 'green';
  }
  // "add" rectangle onto canvas
canvas.add(rect);
canvas.on({
  'object:scaling': scaleListener,
});
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.5.0/fabric.js"></script>
<canvas id="c"><</canvas>