KonvaJS:在缩放整个舞台时如何防止某些形状缩放?

时间:2019-02-16 17:58:10

标签: javascript konvajs

我有一个简单的KonvaJS图像缩放/平移示例,现在我在单击鼠标时添加了锚点,但是问题是,当缩放缩放舞台时,锚点也会变大。我想防止舞台缩放时锚点缩放。

理想情况下,当舞台缩放时,我会寻找某种方法来监听并减小锚点的大小,以使锚点大小保持不变,而不会在整个比例上产生反应。

这是我已经做过的一个例子:

stage.on('click', (e) => {
        const transform = layer.getAbsoluteTransform().copy();
        transform.invert();
        const pos = stage.getPointerPosition();
        const anchorPos = transform.point(pos);
        const anchor = new Konva.Circle({
            x: anchorPos.x,
            y: anchorPos.y,
            radius: 20,
            stroke: '#666',
            fill: '#ddd',
            strokeWidth: 2,
            draggable: true
        });

        layer.add(anchor);
        layer.draw();
    });

https://codepen.io/aurimasniekis/pen/yZQjrN

1 个答案:

答案 0 :(得分:1)

每次扩展舞台时,您只需要调整所有锚点的大小即可。您可以这样做:

stage.find('Circle').setAttrs({
  scaleX: 1 / stage.scaleX(),
  scaleY: 1 / stage.scaleY()
});

https://codepen.io/lavrton/pen/pGQQqZ