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],
// enable only one anchor to see better what is happening
// we are changing width only
enabledAnchors: ['middle-left', 'middle-right'],
});
layer.add(tr);

text.on('transform', function () {
// reset scale on transform
text.setAttrs({
width: text.width() * text.scaleX(),
scaleX: 1,
});
});