UI定制
1. 图层¶
-
支持4个图层,分别为Main / Overlay / Pip / Icon
-
Main在最上方,向下依次为Overlay, Pip, Icon
-
AHC层使用其中3层
Main: 主要贴Warning信息
Overlay:贴OSD
PIP:用在预览/回放
2. 字符串¶
在SDK开发包,Mercury5\proj\sc\project\Dvr_CarDV_SDK\OSDString目录下,有三个文件夹,其中Font,OSDStringsPool这两个文件夹放置OsdStringTable中工具geFont.exe处理后生成的文件。
图 2‑1 字符串文件夹
在OsdStringTable文件夹下找到Excel文档strings.xlsx,打开会看到第一行有"String ID", "English", "SCHINESE", "TCHINESE" 等字符串。
列代表一个国家或地区,新增一列表示新增一种语言。
行代表字符串在各种语言下对应的描述。
图 2‑2 字符串文档
2.1. 字符串转换¶
-
修改第一列的"String ID", 同步更新后面各语言列,确保一一对应。
-
复制Excel文档各语言列的全部内容,保存到对应语言的TXT文件中。如第二列 "ENGLISH" 的全部内容保存到StringTable_English.txt。
-
确认批处理文件StringTable.bat是否需要更新,如重定义某语言对应的字体、大小、存放位置等。
图 2‑3 字符串批处理
-
双击StringTable.bat,将会在 "FONT" 文件夹中生成各字符的点阵图,在 "OSDStringsPool" 文件夹中生成字符串包含的各字符数组。
2.2. 字符串链接¶
-
把生成的文件添加到project_Dvr_CarDV_SDK_OSDString.mak。
-
把strings.xlsx第一列的 "String ID" 复制到 OSDStrings.h 中。
2.3. 字符串使用方法¶
AHC_OSDSetFont()
OSD_ShowString()
AHC_OSDDrawText()
AHC_OSDSetColor()
AHC_OSDSetBkColor()
AHC_OSDSetPenSize()
3. 图标¶
-
图标格式:.BMP,.PNG
-
转换工具:uC-GUI-BitmapConvert.exe
-
SDK没有直接解码图标文件,而是通过转换工具把图标转换成.C档
3.1. 图标转换¶
3.1.1. PNG文件转换¶
-
打开uC-GUI-BitmapConvert.exe
图 3‑1 图标转换工具
-
"File -> Open..." 选择需要转换的图标,或者直接把图标拖进窗口
图 3‑2 打开图标
-
"File -> Save As..." ,弹出窗口中 "保存类型" 为 "C bitmap file (*.c)"
图 3‑3 保存文件
打开保存的文件,可以看到bm1, ac1直接用的是文件名。
图 3‑4 转换后的文件
3.1.2. BMP文件转换¶
-
打开uC-GUI-BitmapConvert.exe,同3.1.1.1
-
"File -> Open..." 选择需要转换的图标,或者直接把图标拖进窗口,同3.1.1.2
图 3‑5 打开图标
-
"Image -> Convert Into -> Best palette",优化调色板
图 3‑6 优化调色板
它会尽可能的使用相邻色,示例ICON颜色由原来11种减少到了4种。
图 3‑7优化调色板
-
"Image -> Transparency...",弹出窗口会列出当前ICON有用到的所有颜色,从中选择一种作为透明色。
图 3‑8 选取透明色
在图3-8中,每个颜色Index高8位为蓝色,中间8位为绿色,低8位为红色,类似0xBBGGRR。
-
如果选择0xFF00FF为透明色,工具最下面一栏会显示选择
图 3‑9 透明色选择成功
-
"File -> Save As..." ,弹出窗口中 "保存类型" 为 "C bitmap file (*.c)", 同3.1.1.3
3.2. 图标链接¶
-
把生成的.C文件放到 "Mercury5\proj\sc\project\Dvr_CarDV_SDK\OSDIcon\OSDIcon\src" 目录下面。
-
打开project_Dvr_CarDV_SDK_OSDIcon.mak,添加新增的.C档。
-
复制.C文件 "GUI_BITMAP" 结构体,打开IconDefine.h,在文档合适位置添加extern声明。
比如,复制图3-4 295行内容到IconDefine.h中声明:
extern GUI_CONST_STORAGE GUI_BITMAP bm1;
3.3. 图标使用方法¶
AHC_OSDDrawBitmap()
AHC_OSDDrawBitmapMag()