# Drawing tools

> 绘图工具统一使用 engine 的 DrawingToolId 和 engine/drawing/types.ts 的 DrawingKind，避免控制器把不支持的旧工具静默转换成 cursor。

Source: https://kcq.nebutra.com/docs/architecture/notes/drawing-tools
Language: zh (original)

目的 [#目的]

绘图工具统一使用 engine 的 `DrawingToolId` 和 `engine/drawing/types.ts` 的 `DrawingKind`，避免控制器把不支持的旧工具静默转换成 `cursor`。

几何约定 [#几何约定]

* `fib-retracement` 使用两个锚点定义价格区间，按 0%、23.6%、38.2%、50%、61.8%、78.6%、100% 绘制水平线。
* `rectangle` 使用两个对角锚点生成轴对齐矩形，并绘制边框与可选填充。
* `arrow` 使用第一个锚点作为起点、第二个锚点作为箭头尖端，生成独立 `arrow` primitive；渲染器一次绘制轴线与实心箭头头部。

三个工具均为双锚点工具，复用现有的锚点采集、预览、持久化、拖拽和基础 primitive 渲染流程。命中检测必须与渲染几何保持一致。
