跳到主要内容

文本

交互式文本元素可以显示基于用户交互更新的动态值、标签和注释。

动态标签

显示随着用户与元素交互而更新的值:

import { InteractivePoint } from '@wangyaoshen/locus-interaction';

const point = new InteractivePoint({
position: [100, 100],
onMove: (pos) => {
// 更新坐标显示
updateLabel(`(${pos[0].toFixed(0)}, ${pos[1].toFixed(0)})`);
},
});

文本渲染

使用适当的样式在画布上渲染文本:

function drawText(
ctx: CanvasRenderingContext2D,
text: string,
x: number,
y: number,
options: TextOptions = {}
) {
const {
font = '14px sans-serif',
color = '#333',
align = 'center',
baseline = 'middle',
} = options;

ctx.font = font;
ctx.fillStyle = color;
ctx.textAlign = align;
ctx.textBaseline = baseline;
ctx.fillText(text, x, y);
}

标签定位

相对于交互元素定位标签:

function positionLabel(
elementPos: Vector2,
offset: Vector2 = [0, 20]
): Vector2 {
return [
elementPos[0] + offset[0],
elementPos[1] + offset[1],
];
}

文本组件

使用 InteractiveText 组件显示可更新的文本:

import { InteractiveText } from '@wangyaoshen/locus-interaction';

const label = new InteractiveText({
position: [250, 50],
text: '坐标: (0, 0)',
fontSize: 16,
color: '#333',
fontFamily: 'Arial, sans-serif',
});

属性

属性类型默认值描述
textstring-要显示的文本
positionVector2[0, 0]文本位置
fontSizenumber14字体大小
colorstring'#333'文本颜色
fontFamilystring'sans-serif'字体系列
align'left' | 'center' | 'right''center'文本对齐