Konva中的位置与偏移(Offset)有什么区别
Konva 中有几个属性看起来类似,可能会引起一些困惑,但它们的作用和用途是不同的。
在本文中,我将解释位置(x 和 y 坐标)与偏移(offsetX 和 offsetY)之间的区别。
因此,x 和 y 属性定义了节点在画布上的位置。如果你设置了 draggable = true 属性并开始拖动,Konva 会改变节点的 x 和 y 属性。这个逻辑会应用于所有节点(甚至包括 Konva.Line)。
矩形形状的位置定义其左上角点。圆形的 posición 定义其中心点。
import Konva from 'konva';
const stage = new Konva.Stage({
container: 'container',
width: window.innerWidth,
height: window.innerHeight,
});
var layer = new Konva.Layer();
var rect = new Konva.Rect({
x: 20,
y: 20,
width: 100,
height: 100,
fill: 'yellow',
stroke: 'black',
strokeWidth: 4,
draggable: true,
});
// 将图形添加到图层
layer.add(rect);
var circle = new Konva.Circle({
x: 150,
y: 120,
radius: 50,
fill: 'red',
stroke: 'black',
strokeWidth: 4,
draggable: true,
});
// 将图形添加到图层
layer.add(circle);
var text = new Konva.Text();
layer.add(text);
// 将图层添加到舞台
stage.add(layer);
function updateText(e) {
text.text('位置:x = ' + e.target.x() + ' y = ' + e.target.y());
}
rect.on('dragmove', updateText);
circle.on('dragmove', updateText);