Files
stc32g128k/work-order/wo-06

22 lines
1.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 工单 WO-06时间设置界面整屏闪烁改成局部刷新
**优先级**:中
**状态**:进行中
---
## 问题列表
1. 时间设置界面(`set_clock_app`)调整小时/分钟时的闪烁效果,现在是每次闪烁状态翻转就整屏 `LCD_Clear()` 再全部重画,视觉上是整屏黑一下亮一下,而不是只有正在调节的那个数字在闪。
---
## 实现思路
- 根因:`App/ui.c` 的 `UI_ShowSetTimePage()` 函数开头无条件 `LCD_Clear(COLOR_BLACK)`然后重画锁头图标、电池、小时、冒号、分钟、AM/PM、日期全部元素而 `App/app_set_clock.c` 的 `SetClockApp_onRun()` 每 500ms 闪烁状态翻转一次就整个调用这个函数。
- 改法:拆成两个函数——
- 一个"整页绘制"函数,只在真正进入时间设置界面(`SetClockApp_OnStart()`)或调节字段切换(长按 CONFIRM 切换 小时/分钟 焦点)时调用一次负责画锁头、电池、冒号、AM/PM、日期这些不变的静态内容以及当前的小时、分钟数字。
- 一个"局部刷新"函数,只负责重画正在调节的那个数字所在的矩形区域(先 `LCD_FillRect` 成黑色,再按闪烁状态决定是否写回数字)`SetClockApp_onRun()` 里每次闪烁翻转只调用这个局部刷新函数,不再动其它区域。
- 需要确定小时/分钟数字在屏幕上的准确坐标和尺寸(参照现有 `LCD_ShowString16x32(23, 100, ...)` / `LCD_ShowString16x32(75, 100, ...)` 调用16x32 字体两位数字宽度为 32px),局部刷新时精确擦除这一块,不多不少。
- 涉及文件:`App/ui.c`(拆分 `UI_ShowSetTimePage`)、`App/ui.h`(新增局部刷新函数声明)、`App/app_set_clock.c`(`OnStart`/字段切换调用整页绘制,`onRun` 调用局部刷新)。