VisualHMI - 文字颜色控制(定制)
1.概述
VisualHMI 提供全局文字颜色批量设置接口,允许开发者通过统一接口动态修改界面控件的文字前景色,而无需逐个配置或维护多套独立界面。该功能特别适用于需根据环境光、运行模式或用户偏好动态调整视觉风格的场景(如白天/夜间模式切换),显著提升工程开发效率与系统可维护性。
✅ 核心功能如下:
- 一键式主题切换: 通过调用单一指令或绑定一个控制变量,即可同步更新画面中所有文本类控件的文字颜色,实现“亮色模式 ↔ 暗色模式”的即时切换。
- 背景与文字协同适配: 可配合背景图片或背景色的动态更换(如白天使用浅色背景 + 深色文字,夜间使用深色背景 + 浅色文字),确保高对比度与视觉舒适性,符合人因工程与工业可用性标准。
适用范围:VisualHMI - HMI&M系列&Dx系列(定制固件)
支持批量设置的控件如下所示

为使用 控件分组管理(如批量设置文字颜色、统一属性控制等高级功能),需按以下两步完成系统级与控件级的配置:
1. 1.全局启用控件分组功能
在工程配置中开启分组支持:
路径:
工程属性 → 控件分组 → 启用作用:激活 HMI 运行时对控件分组机制的支持。若未启用,所有控件将忽略分组相关属性,即使已配置分组 ID 亦无效。
1. 2. 为控件分配有效分组标识
对需纳入分组管理的每个控件,必须显式指定其 控件 ID
配置项:控件属性面板 →
控件ID要求:控件ID ≠ 0(0 为默认无效值,表示“未分组”)

2. API说明
2.1 on_wgt_text_color(screen,control)
控件文字颜色动态回调函数,on_wgt_text_color(screen, control) 是 HMI 系统提供的控件文字颜色动态设置接口,用于根据特定条件批量设置控件的文字颜色。
📊 参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
screen |
number | 当前画面 ID: 用于区分多页面中的同名控件 |
control |
number | 目标控件 ID: •仅当 control ≠ 0 时触发回调 |
📊 返回值说明
| 返回值 | 类型 | 说明 |
|---|---|---|
color |
number | RGB565 格式的 16 位颜色值 |
3. 应用
为验证 控件分组颜色管理功能 的实际效果,本画面按如下规范进行控件布局与属性配置:
3.1. 核心状态指示器
- 在画面中添加一个 多状态指示灯控件,用于设置颜色切换。

3.2. 颜色可调控件集合
添加以下支持前景色/文字色动态修改的控件,并统一设置画面ID为5,包括但不限于:
- 静态文本
- 位状态指示灯
- 多状态指示灯
- 位设置按钮
- 字设置按钮
- 功能按钮
- 下拉选择框
- 滚轮选择器
- RTC
上述控件均具备 可编程文字颜色或前景色属性,是颜色主题切换的主要作用对象。

3.3. Lua 编辑
在 on_wgt_text_color(screen, control) 回调函数中,通过判断当前画面 ID(screen)与控件 ID(control),读取寄存器 LW3000 的值,并将其作为 RGB565 颜色值赋给 color 变量后返回,从而实现对指定分组控件文字颜色的动态控制。
function on_wgt_text_color(screen,control)
local color = 0x001f
if screen == 0
then
if control == 5
then
local val = get_uint16(VT_LW, 0x3000)
if val == 0
then
color = 0x00FF
elseif val == 1
then
color = 0x0562
elseif val == 2
then
color = 0x0429
elseif val == 3
then
color = 0x0177
elseif val == 4
then
color = 0xF800
end
end
end
print('on_wgt_text_color('..screen..','..control..','..(string.format('%04X', color))..')')
return color
end
4. 运行预览
运行虚拟屏后,点击颜色切换控件,即可实时观察到所有 控件 ID 为 5 的支持文字着色的 UI 元素(如文本、按钮、指示灯等)同步完成文字颜色的批量更新,如下所示:
