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

问题描述 投票:1回答:1

我有一个简单的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

javascript konvajs
1个回答
2
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.