feat: 重构绘图区网格布局与信号拖拽,精简界面信息并新增 Y 轴精确控制
网格与标尺: - 消除网格之间无意义的间隔,改用较重的横向分界线明确区分相邻网格 - 纵轴标尺从绘图区左侧外侧移入网格内侧,并改为带半透明衬底的覆盖层绘制, 使其在波形之上依然清晰可读;绘图区左侧空间因此完全还给波形 - 继续保证底部时间轴预留高度,并把时间列名贴左显示、避开刻度标签 常规模式拖拽: - 常规模式下水平拖动平移时间轴,纵向拖动偏移当前网格的幅值显示位置 - 绘图区右键菜单新增「恢复 Y 轴自适应」「设置 Y 轴最大值…」「设置 Y 轴最小值…」 「全部自适应」,上下限通过内联输入框直接键入(与线宽输入一致的交互) 信号拖拽: - 鼠标贴近信号曲线时给出光晕高亮与提示气泡(与时间光标的提示方式一致) - 仅在出现提示时按左键才会进入拖拽;拖拽过程中在目标网格内绘制曲线虚影、 高亮目标网格边框并提示「移动到网格 N」,松开左键确认归属变更 - 命中检测基于折线到光标的精确点到线段距离,散点模式按采样点距离判定 界面精简: - 移除底部状态栏(左下角统计与右下角提示均不再占用空间),错误改由对话框提示 - 标题栏只显示应用名称 - 移除工具栏右上角的视图时间范围文本;按钮除「导入文件」外整体靠右排列 其他: - 新增 PlotView::PaintEditField 统一绘制时间光标与网格 Y 轴上下限的输入框 - 移除已无引用的 UiDrawDashedLine 与绘图区标尺占位宽度
This commit is contained in:
1 parent
17eb03a1b3
commit
542aa51e40
9 files changed
+981
-335
No files matched your search
@@ -124,12 +124,6 @@ namespace jdi
|
||||
*/
|
||||
void Render();
|
||||
|
||||
/**
|
||||
* @brief 绘制底部状态栏。
|
||||
* @param [IN,OUT] g 绘图上下文。
|
||||
*/
|
||||
void PaintStatusBar(gd::Graphics& g);
|
||||
|
||||
/**
|
||||
* @brief 获取当前激活标签页配置(可写)。
|
||||
* @return 激活标签页配置引用。
|
||||
@@ -199,6 +193,14 @@ namespace jdi
|
||||
*/
|
||||
void ShowTabContextMenu(const TabBarResult& result);
|
||||
|
||||
/**
|
||||
* @brief 弹出绘图区网格右键菜单(设置 Y 轴上下限 / 恢复自适应)。
|
||||
* @param [IN] laneIndex 目标网格下标。
|
||||
* @param [IN] x 客户区横坐标。
|
||||
* @param [IN] y 客户区纵坐标。
|
||||
*/
|
||||
void ShowPlotContextMenu(int laneIndex, int x, int y);
|
||||
|
||||
/**
|
||||
* @brief 派发弹出菜单的选择结果。
|
||||
* @param [IN] result 菜单选择结果。
|
||||
@@ -231,9 +233,10 @@ namespace jdi
|
||||
bool HandleKeyDown(WPARAM key);
|
||||
|
||||
/**
|
||||
* @brief 设置状态栏提示信息。
|
||||
* @brief 报告操作结果信息。
|
||||
* @param [IN] text 提示文本。
|
||||
* @param [IN] isError 是否为错误提示。
|
||||
* @note 界面不再保留常驻状态栏:错误以对话框提示,普通提示被忽略,避免无用信息干扰。
|
||||
*/
|
||||
void SetStatusMessage(const std::wstring& text, bool isError);
|
||||
|
||||
@@ -281,7 +284,6 @@ namespace jdi
|
||||
gd::RectF m_panelRect; /**< 信号面板区域。 */
|
||||
gd::RectF m_splitterRect; /**< 面板分隔条区域。 */
|
||||
gd::RectF m_plotRect; /**< 绘图区区域。 */
|
||||
gd::RectF m_statusRect; /**< 状态栏区域。 */
|
||||
|
||||
float m_panelWidth = 366.0f; /**< 面板宽度(逻辑像素)。 */
|
||||
bool m_draggingSplitter = false; /**< 是否正在拖动分隔条。 */
|
||||
@@ -296,8 +298,7 @@ namespace jdi
|
||||
Target m_activeTarget = Target::NONE; /**< 当前鼠标作用目标。 */
|
||||
bool m_trackingLeave = false; /**< 是否已注册鼠标离开通知。 */
|
||||
int m_tabMenuIndex = -1; /**< 标签栏右键菜单的目标标签页下标。 */
|
||||
std::wstring m_statusMessage; /**< 状态栏提示文本。 */
|
||||
bool m_statusIsError = false; /**< 状态提示是否为错误。 */
|
||||
int m_plotMenuLane = -1; /**< 绘图区右键菜单的目标网格下标。 */
|
||||
|
||||
int m_cachedVisibleCount = -1; /**< 上次同步时的可见信号数量。 */
|
||||
std::size_t m_cachedLaneCount = 0; /**< 上次同步时的网格数量。 */
|
||||
|
||||
Reference in new issue
Block a user