我无法在paper.js中将转换矩阵从一层复制到另一层

时间:2019-06-13 12:13:51

标签: paperjs

我需要复制比例并将纸张中的属性从一项转换为另一项。

我尝试使用

itemA.copyAttributes(itemB, false)

但这似乎什么都没做?

我也尝试过

itemA.transform(itemB.matrix)

这又不起作用。我可以使用下面的行复制翻译内容

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

但是我不知道如何复制秤,任何想法

1 个答案:

答案 0 :(得分:1)

能够将转换从一项复制到另一项的一个技巧是将item.applyMatrix设置为false
这将具有将项目平移,缩放和旋转存储为属性的作用,而不是将其应用于其几何形状。
然后,您就可以将它们应用于其他项目。

这里是sketch演示解决方案。

// 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;