DeepSeek V4.1 Flash
df715a035e
修复浮动面板事件穿透 / 自由标记总是预览最近信号 / 固定点位于GX与图例之下 / 预览曲线取值插值;体积红线放宽到900KB
1) 浮动面板不得被右键与中键穿透(用户报告:在面板上右键会弹出下面网格的右键菜单)
- 新增 PlotView::OnRButtonDown:TopPanelAtPoint 命中即置顶并消费该次右键;
Application::WM_RBUTTONDOWN 在「绘图区右键 → 网格菜单」之前调用它。
- OnMButtonDown 开头同样判定面板:命中即消费,不再进入平移。
2) 「自由标记点选取」总是预览网格内离鼠标较近的信号(用户报告:单信号时也必须贴近曲线)
- ProbeFreeMarker 删除 `if (!hitCurve) continue;`,改为两候选取更近:
① 鼠标到画出来的折线的垂直距离(阶跃竖直段只有它能命中);
② 同一时刻(鼠标时刻吸附最近采样)采样点的屏幕纵向距离。
- 门槛 tolerance 只用于「已吸附」圆环;固定点仍恒吸附到真实采样时刻。
3) 固定标记点位于 GX 编号徽标与图例之下(用户要求:数据显示不得遮挡它们)
- PaintFreeMarker 把 m_legendHits 托底矩形与 LaneBadgeRect 用 gd::Region::Exclude
排除出绘制区;仅在确有固定点/预览时才计算。
- PaintFreeMarkerCapsule 新增 vectorText:胶囊与遮挡矩形相交时文字改走 GDI+
(GDI DrawTextW 不认 GDI+ 裁剪区)。
4) 预览曲线(中心轴/均值滤波/弱峰调整)的光标取值点落回曲线
- paintDerivedCapsule 改为在光标准确时刻按时间线性插值,且先 ApplyDrawTransform 再插值
(绝对值/垂直镜像非线性,先插值会偏离折线);双光标增量同样插值。
5) 产物体积红线由 800KB 放宽到 900KB(到达阈值时提醒,不是禁止超过)。
验证(全离屏,未占用鼠标/键盘/屏幕):仓库外临时探针 25/25(A 面板右键/中键不穿透且面板外仍生效;
B 远离曲线可预览与单击固定、两信号按纵向距离择优;C 图例与 GX 区域像素差 0、整幅差异 5 万像素;
D 阶跃区标注点与曲线差 0.0px,插值点与最近采样点相差 39px/197px);A/B 恢复旧门槛 ⇒ 5 项失败,
改回最近采样取值 ⇒ 均值/中心轴各偏 36px 失败。make release / make debug 零警告;
Target.exe 860,672 字节(840.5 KiB)。