Skip to main content

如何在画布上调整文本大小?

请记住,Konva.Transformer 会改变节点的 scaleXscaleY 属性。如果您想在不改变文本大小的情况下更改文本的宽度,您应该将文本的缩放重置为 1,并相应地调整 width

您可以使用 transform 事件根据需要更新文本的属性。

说明:尝试调整文本大小。

import Konva from 'konva';

const width = window.innerWidth;
const height = window.innerHeight;

const stage = new Konva.Stage({
container: 'container',
width: width,
height: height,
});

const layer = new Konva.Layer();
stage.add(layer);

const text = new Konva.Text({
x: 50,
y: 50,
text: 'Hello from Konva! Try to resize me.',
fontSize: 24,
draggable: true,
width: 200,
});
layer.add(text);

const tr = new Konva.Transformer({
nodes: [text],
// 仅启用一个锚点,以便更好地查看正在发生的事情

// 我们只改变宽度

enabledAnchors: ['middle-left', 'middle-right'],
});
layer.add(tr);

text.on('transform', function () {
// 在变换时重置缩放

text.setAttrs({
width: text.width() * text.scaleX(),
scaleX: 1,
});
});