Я не могу скопировать матрицу преобразования из одного слоя в другой в paperjs - PullRequest
0 голосов
/ 13 июня 2019

Мне нужно скопировать масштаб и перевести свойства из одного элемента в другой в paperjs.

Я пытался использовать

itemA.copyAttributes(itemB, false)

, но это, похоже, ничего не дает?

Я также пробовал

itemA.transform(itemB.matrix)

Что опять не работает.Я могу скопировать перевод, используя строки ниже

itemA.position.x = itemB.position.x
itemA.position.x = itemB.position.x

Но я не могу понять, как скопировать масштаб, любые идеи

1 Ответ

1 голос
/ 14 июня 2019

Один прием, позволяющий копировать преобразования из одного элемента в другой, - установить item.applyMatrix в false.
Это приведет к сохранению перевода, масштабирования и поворота элемента в свойства, а не к их геометрии.
После этого вы сможете применить их к другому предмету.

Вот эскиз , демонстрирующий решение.

// Create an orange filled square.
var squareA = new Path.Rectangle({
    from: view.center - 200,
    to: view.center - 100,
    fillColor: 'orange',
    // Notice that matrix is not applied, this will allow us to copy scaling and rotation later.
    applyMatrix: false
});

// Create a blue stroked square by cloning the orange one.
squareB = squareA.clone();
squareB.strokeColor = 'blue';
squareB.fillColor = null;

// Transform the orange square.
squareA.translate(100, 100);
squareA.scale(2);
squareA.rotate(80);

// Replicate transformations to blue stroked square by copying individual values.
squareB.position = squareA.position;
squareB.scaling = squareA.scaling;
squareB.rotation = squareA.rotation;
...