KonvaJS:如何在缩放整个舞台时防止某些形状缩放?
KonvaJS: How to prevent some shapes from scaling when scaling whole stage?
我有一个简单的 KonvaJS 图像 zoom/pan 示例,现在我在单击鼠标时添加锚点,但问题是当舞台缩放以进行缩放时,锚点也会变大。我想在舞台缩放时防止锚点缩放。
理想情况下,我会寻找一些方法在舞台缩放时聆听并减小锚点的大小,以便它们保持相同的大小而不会对整个规模做出反应。
这是我已经完成的示例:
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();
});
每次缩放舞台时,只需调整所有锚点的大小即可。你可以这样做:
stage.find('Circle').setAttrs({
scaleX: 1 / stage.scaleX(),
scaleY: 1 / stage.scaleY()
});
我有一个简单的 KonvaJS 图像 zoom/pan 示例,现在我在单击鼠标时添加锚点,但问题是当舞台缩放以进行缩放时,锚点也会变大。我想在舞台缩放时防止锚点缩放。
理想情况下,我会寻找一些方法在舞台缩放时聆听并减小锚点的大小,以便它们保持相同的大小而不会对整个规模做出反应。
这是我已经完成的示例:
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();
});
每次缩放舞台时,只需调整所有锚点的大小即可。你可以这样做:
stage.find('Circle').setAttrs({
scaleX: 1 / stage.scaleX(),
scaleY: 1 / stage.scaleY()
});