Files
Just-DataInspector/Components/PlotView
DeepSeek V4.1 Flash b884e7ecb4 绘图区交互修正:悬停不改光标、图例联动、时间轴子刻度、边沿计数规则与光标区间联动
- 网格内信号悬停不再改变鼠标光标(维持原始箭头);只有真正按下拖动(MOVE_SIGNAL)
  时才切换为抓握光标。

- 修复网格左上角图例的联动缺陷:
  * 根因是图例的选中/悬停底色绘制在静态场景缓存里,而缓存指纹(SceneContentHash)
    未包含「选中信号」→ 在左侧信号面板点选信号后缓存未失效,图例不会高亮。
    现在把 SelectedRef() 折叠进指纹,选中变化会正确重绘。
  * 图例悬停态随鼠标变化,不能进缓存:新增 m_hoverLegend 与 PaintLegendHighlight(),
    在静态场景贴图之后用半透明强调色叠在本条目上形成“半高亮”,并在两条绘制路径
    (缓存贴图快路径 / 整幅重绘路径)中都调用。
  * 悬停图例时不再触发曲线拖拽提示(不画信号光晕、不弹“按住拖拽可移入其它网格”气泡),
    仅半高亮;点选后参与联动。

- 主时间轴新增五等分子刻度线:在相邻主刻度之间插入 4 条短刻度(3px),
  与主刻度重合的位置跳过。

- 「实验性功能 → 边沿计数」按用户明确的规则重做统计:
  * 判定改为“穿越横向光标所在的 Y 值”:信号从下往上穿越 → 上升沿,
    从上往下穿越 → 下降沿(原先按信号幅值中点判定,与光标无关,因此拖动光标
    结果不变)。
  * 缓存键随之扩展为「文件 + 信号 + 横向光标幅值 + 时间区间」,
    拖动横向光标或拖动时间光标都会重算。
  * 时间单调时二分定位采样区间,非单调时按区间过滤;NaN 仍视为断点。
  * 面板宽度改为按文本实测宽度(EdgePanelWidth,使用不含省略号的
    UiMeasureTextWidth)自适应,名称与“上升沿 N / 下降沿 M”一律完整显示,
    数字不再被省略或截断。
  * 点击 ✕ 现在同时关闭该网格的边沿计数功能(横向光标一并消失),
    不再是仅收起面板。

- 边沿计数与光标功能联动:双光标模式下面板标题追加尾缀“(光标区间内)”,
  统计只覆盖左右光标之间的时间区间;区间端点始终取两条光标时间的较小/较大值,
  因此把任一光标拖到另一侧(左右交换)后区间与计数依然正确。

验证(TestData/VERY_BIG_DATA.CSV,编码器A相,125%、1725x996):
- 光标形态:悬停曲线 = ARROW(不改变);拖拽 = SIZEALL。
- 图例联动:在左侧面板点选信号后图例条目正确高亮;悬停图例显示半高亮、
  无拖拽提示气泡。
- 时间轴五等分子刻度可见。
- 边沿计数(用独立脚本 .preflight/edgeprobe2.ps1 / edgeprobe3.ps1 按同一规则复算,
  与界面显示逐位一致):
  * 阈值 2.54415(全区间)→ 界面/复算均 上升沿 1333422 下降沿 1333421;
    拖动横向光标到 5.08994 → 界面/复算均 上升沿 1843881 下降沿 1843881(计数随光标变化);
    阈值 100 → 0 / 0。
  * 双光标区间 [48.0211, 64.4051] → 界面/复算均 上升沿 193161 下降沿 193161;
    区间 [64.4051, 79.8623] → 163647 / 163647。
  * 光标交换:把光标 1 的时间改为 120(越过光标 2 的 79.8623)后,Δt 变为
    40s 137.726ms,面板标题为“边沿计数(光标区间内)”,
    计数 404668 / 404669 与复算的区间 [79.8623, 120] 完全一致。
- ✕:面板与横向光标同时消失。
- 回归:[1].CSV 双光标正常(Δt:151ms 200us),面板标题带尾缀;
  make clean && make all 无警告无错误。
2026-10-09 10:13:38 +08:00
..