Ответ 1
Вы можете использовать object.lockUniScaling = true
.
Кроме того, вы можете настроить свои углы: http://fabricjs.com/customization
По умолчанию элементы fabric.js имеют 8 точек для масштабирования любых объектов. Но приложение, в котором я работаю, требует, чтобы растяжение не допускалось на одной оси (горизонтально или вертикально). Мне нужны только угловые точки, а не боковые стороны.
Возможно ли это с помощью fabric.js?
Вы можете использовать object.lockUniScaling = true
.
Кроме того, вы можете настроить свои углы: http://fabricjs.com/customization
Да,
вы можете использовать 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
.
imgInstance.setControlsVisibility({
mt: false,
mb: false,
ml: false,
mr: false,
bl: false,
br: false,
tl: false,
tr: false,
mtr: false,
});
измените "imgInstance" на ваш объект.
По умолчанию вы не можете это сделать. Но вы можете создать некоторые функции, такие как: если width = x, а height = y с некоторым соотношением между x и y на каком-либо событии (например, "on: масштабирование" ), вы всегда можете сделать ширину и высоту в определенном соотношении.