【问题标题】:Disable panning on some elements Fabric.js禁用对某些元素 Fabric.js 的平移
【发布时间】:2017-07-11 13:45:23
【问题描述】:

我正在使用带有 react 的 Fabric.js,并且我在上面实现了一些工具。 这是它的外观:

但是有一个平移工具,我正在使用fabric 中的relativePan() 函数。我遇到的一个问题是使用平移工具拖动时标尺(标有红色)不应该移动。 它们也是画布的一部分,与其他所有元素一样。

有什么方法可以禁用某些元素的平移?我试过了:

lockMovementX
lockMovementY
selectable: false

【问题讨论】:

    标签: javascript reactjs fabricjs


    【解决方案1】:

    诀窍是在平移时从静止物体中减去移动坐标:

    canvas.on('mouse:move', function(e) {
      if (panning && e && e.e) {
        moveX = e.e.movementX;
        moveY = e.e.movementY;
        topRuler.set({
          top: topRuler.top - moveY,
          left: topRuler.left - moveX
        });
        leftRuler.set({
          top: leftRuler.top - moveY,
          left: leftRuler.left - moveX
        });
        canvas.relativePan(new fabric.Point(moveX, moveY));
      }
    });
    

    这是一个有效的 JSFiddle,https://jsfiddle.net/rekrah/z3p8utmc/

    【讨论】:

    • 不用担心。如果您还需要什么,请告诉我。
    • 您好,蒂姆,还有一个问题。它工作得很好,但是我与 Zoom 结合使用,当画布放大或缩小时,标尺仍在移动:prntscr.com/edxd1a
    • 您的缩放功能现在看起来如何?你能分享一些代码吗?
    • 事实上,这就是我想要实现的目标:vid.me/qs5Q 因此,在平移时需要根据画布大小和缩放级别以某种方式定位标尺,而不是与其他元素一起移动。十分感谢你的帮助!真的很感激。
    • 亲爱的 TIm,您有机会查看这个问题吗?谢谢。
    猜你喜欢
    • 2014-02-10
    • 1970-01-01
    • 2013-04-27
    • 2011-02-13
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多