Как отключить точки масштабирования элементов холста, используя fabric.js?

По умолчанию элементы fabric.js имеют 8 точек для масштабирования любых объектов. Но приложение, в котором я работаю, требует, чтобы растяжение не допускалось на одной оси (горизонтально или вертикально). Мне нужны только угловые точки, а не боковые стороны.

Возможно ли это с помощью fabric.js?

Ответ 1

Вы можете использовать object.lockUniScaling = true.
Кроме того, вы можете настроить свои углы: http://fabricjs.com/customization

Ответ 2

Да,

вы можете использовать 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: http://jsfiddle.net/Colmea/GjjJ8/1/ (обратите внимание, что небольшая ошибка с контролем "mr" в версии 1.4.0, исправленная в 1.4. 1).

Или вы можете использовать object.setControlVisible():

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

Примечание.. Это только скрывает элементы управления и не позволяет перетаскивать их. Но чтобы избежать любого масштаба: используйте свойства lockScalingX и lockScalingY.

Ответ 3

   imgInstance.setControlsVisibility({
         mt: false, 
         mb: false, 
         ml: false, 
         mr: false, 
         bl: false,
         br: false, 
         tl: false, 
         tr: false,
         mtr: false, 
    });

измените "imgInstance" на ваш объект.

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

Ответ 4

По умолчанию вы не можете это сделать. Но вы можете создать некоторые функции, такие как: если width = x, а height = y с некоторым соотношением между x и y на каком-либо событии (например, "on: масштабирование" ), вы всегда можете сделать ширину и высоту в определенном соотношении.