2015-12-21 2 views
0

в fabricjs, слева, сверху, углу, scaleX и scaleY отличается в группе, а не в группе. Я могу получить правильные атрибуты на основе холста, когда объект не находится в группе. Но как только этот объект в группе, слева или сверху, или угол, который я получаю, зависит от группы.Как получить угол, координаты и масштаб объекта по группе?

Если я поворачиваю группу, изменился угол группы, но когда я использую group._objects[i].angle, чтобы получить угол объекта, угол не изменится.

How to get the canvas-relative position of an object that is in a group? Этот вопрос решил проблему с левым верхним углом, но как получить угол и масштаб по группе? Спасибо за чтение.

ответ

2

Недавно fabricjs получил капитальный ремонт управления групповыми преобразованиями. Используйте последнюю версию и попробовать это:

//object is your desired object inside the group. 
var matrix = object.calcTransformMatrix(), 
    options = fabric.util.qrDecompose(matrix); 
//options will be an object with following properties. 
/* 
    options.translateX //left position 
    options.translateY //top position 
    options.scaleX 
    options.scaleY 
    options.skewX 
    options.skewY 
    options.angle // angle in degrees. 
*/ 

Этот код взят из функции realizeTransform в классе fabric.Group.

+0

Большое спасибо, но если я хочу получить правильный результат, мне нужно установить originX объекта и originY в "center". Вот скрипка: https://jsfiddle.net/kzh7agh7/1/. И я не знаю, почему значение геометрии по умолчанию для originX или Y - это «left» и «top'.but Path или Group - это« центр »? Почему бы не сделать значения по умолчанию« центром »? –

Смежные вопросы