跳到主要内容

如何调整 Canvas 文本尺寸?

请记住,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,
});
});