跳到主要内容

画线工具

画线工具让你在 K 线上叠加标注图形——例如支撑/阻力水平线、趋势射线、斐波那契回调。图形画在图表 pane 上(主图 paneId"main"),可拖动锚点;库负责命中检测、重绘与和十字线的互斥。

两种用法:

方式怎么做
工具画线setOverlay(工具 id) 进入放置模式,在图上按点数依次点击完成
代码画线addDrawing({ tool, paneId, points, style }) 直接写入,适合脚本 / 回测标注

入口:useDrawOverlay(),从 @keisen-charts/react/toolkit@keisen-charts/vue/toolkit 导入。必须在 KeisenChart 子树内调用(如 header)。

内置工具

id点数说明
horizontal1水平线(固定价格)
vertical1垂直线(固定时间 / bar)
priceChannel1价格通道(水平射向右侧)
ray2射线(两点定方向)
fibRetracement2斐波那契回调
parallelLines3平行直线

API

useDrawOverlay(options?)

options类型说明
stickyToolboolean?画完是否保持当前工具;默认 false(画完回浏览)
返回值类型说明
activeToolDrawingToolId | null(Vue 为 Ref当前放置工具;null 为浏览(十字线)
setOverlay(tool: DrawingToolId | null) => void切换工具;传 null 退出放置
drawingsDrawing[]当前全部图形
selectedIdsstring[]选中图形 id
stickyTool / setStickyToolboolean / setter画完是否粘滞工具
addDrawing见下表程序化创建,返回 id
updateDrawing(id, patch) => void改 style / points / visible 等
removeDrawing(id) => void删除一根
clearDrawings(paneId?) => void清空;可限定 pane
serialize() => string导出 JSON
hydrate(json) => void从 JSON 恢复
toolbarPropsDrawToolsToolbarProps可直接喂给自写工具条

addDrawing(drawing)

字段类型说明
toolDrawingToolId工具类型
paneIdstring主图用 "main"
points{ barIndex, value, time? }[]锚点;缺 time 时库按当前 kline 补
style{ stroke, lineWidth, lineDash? }?描边;有默认蓝
idstring?可选;不传则自动生成
editable / locked / visibleboolean?默认可拖、未锁、可见

toolbarProps / DrawToolsToolbarProps

字段说明
toolsDRAWING_TOOL_METAS(id + 中英文 label)
activeTool当前工具
setOverlay同 hook
clearDrawings同 hook

工具条 UI 请复制文档示例再改;库不内置成品组件。

相关类型速查

type DrawingPoint = { barIndex: number; time: number; value: number };
type DrawingStyle = { stroke: string; lineWidth: number; lineDash?: number[] };
type Drawing = {
id: string;
tool: DrawingToolId;
paneId: string;
points: DrawingPoint[];
style: DrawingStyle;
editable?: boolean;
locked?: boolean;
visible?: boolean;
};

示例:用代码画线

按钮调用 addDrawing,在最新价画水平线、在中段到最新价画射线:

加载可运行示例…

示例:用工具画线

选中工具后在图上点击落笔(水平线点 1 下,射线点 2 下,平行线点 3 下):

加载可运行示例…