How can I disable scaling points of canvas elements using fabric.js?

前端 未结 5 1673
臣服心动
臣服心动 2021-02-12 11:17

By default fabric.js elements come with 8 points to scale any objects. But the app I\'m working specifically requires that stretching should not be allowed on a single axis (hor

相关标签:
5条回答
  • 2021-02-12 11:49

    Use it:

    object.hasControls = object.hasBorders = false;

    See http://fabricjs.com/customization

    0 讨论(0)
  • 2021-02-12 11:55

    By default you can't make it. But you can create some functions like : if width = x then height = y with some relation between x and y on some event(like "on:scaling"), you can always make the width and height to be in certain ratio.

    0 讨论(0)
  • 2021-02-12 12:04

    Yes,

    you can use object.setControlsVisibility(): http://fabricjs.com/docs/fabric.Object.html#setControlsVisibility

    this.setControlsVisibility({
        mt: false, // middle top disable
        mb: false, // midle bottom
        ml: false, // middle left
        mr: false, // I think you get it
    });
    

    JsFiddle example: http://jsfiddle.net/Colmea/GjjJ8/1/ (note there is a minor bug with 'mr' control in 1.4.0 version, fixed in 1.4.1).

    Or you can use object.setControlVisible() :

    object. setControlVisible('mt', false); // disable middle top control

    Note: This only hides controls and avoid dragging them. But to avoid any scale: use lockScalingX and lockScalingY properties.

    0 讨论(0)
  • 2021-02-12 12:08
       imgInstance.setControlsVisibility({
             mt: false, 
             mb: false, 
             ml: false, 
             mr: false, 
             bl: false,
             br: false, 
             tl: false, 
             tr: false,
             mtr: false, 
        });
    

    change "imgInstance" to be your object.

    @http://fabricjs.com/docs/fabric.Image.html

    0 讨论(0)
  • 2021-02-12 12:15

    You can use object.lockUniScaling = true.
    Also, you can customize your corners: http://fabricjs.com/customization

    0 讨论(0)
提交回复
热议问题