前文回顾
《单片机—HLK-W801并口驱动ST7789》
《单片机—HLK-W801驱动触摸屏》
《单片机—HLK-W801图形框架LVGL移植》
《单片机—HLK-W801图形框架LVGL下开发(一)》
《单片机—HLK-W801图形框架LVGL下开发(二)》
2022.2.21日的效果如下
w801上移植lvgl,并增加APP模拟
中文支持
全世界都在学中国话
孔夫子的话 越来越国际化
全世界都在讲中国话
我们说的话 让世界都认真听话
by-S.H.E
所以汉化已经迫在眉睫了。
定制字体
首先,我们要生成一个小型的字库,因为我们用在单片机上,全部放进去没有任何意义,我们只用了几个汉字,所以定制一个小型字库,是最好的方法。
lvgl提供了在线生成字体文件的方式 ------在线地址------
我这里只是把主页上的图标(button上的文字)汉化了一下,所以就只是用了几个汉字加上英文大小写字母
然后网站会给你自动生成一个字体C文件。我们把它放在源文件路径中,能够进行编译。
另外还有一种工具的方式,LvglFontTool。不过针对8.0以上的版本,还需要进行修改,还没有尝试,不过有博主已经写过了,可以试试,参考文档
flamebox的《在ESP32的Lvgl8上使用LvglFontTool显示汉字》
字体使用
首先是引用字体
然后在我们填充lable的时候,创建一个新的style,并将其绑定到lable上,最后用静态设置文字,就可以填充汉字了。
static lv_style_t font_style;
lv_style_init(&font_style);
lv_style_set_text_font(&font_style,&HtFont);
lv_obj_t * app_btn_label = lv_label_create(app_btn);
lv_obj_add_style(app_btn_label, &font_style, LV_STATE_DEFAULT);
lv_label_set_text_static(app_btn_label, "温湿度");
记住步骤就对了,类似的操作都可以如此,例如修改其他的object,都可以进行这种绑定。不过这个style要不要加static,可能需要斟酌一下。不保熟……
错误与解决
首次运行就报错了
这里提示这个宏定义并没有打开,亚像素渲染。不知道是不是和我在前面的工具中打开了这个有关系
感兴趣的话可以试一下,这里直接打开宏定义也可以解决问题
展示
按钮与星期的显示进行了汉化,还是汉字看着心动。
温湿度的窗口标题也进行了汉化
感觉还是很舒服,老祖宗的文字就是好看。
内置字库
其实lvgl内部预置了一个中文字库,只需要开启一个宏定义即可
1000个中文汉字。
使用也非常简单
lv_obj_t * cz_label = lv_label_create(cont);
lv_label_set_text(cz_label, "嵌入式系统(Embedded System),\n是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。");
lv_obj_set_style_text_font(cz_label, &lv_font_simsun_16_cjk, 0);
为啥不早说这个,一来是占资源,二来是我也是后来才看到了这个,最重要的一点就是,里面有很多曰本字,汉字也不是常用的,所以还是自己弄字库吧。
结束语
青春就这么几年,疫情都占了三年,前几天大家都听到了一个说法,叫做大号流感的说法,总会感觉现在防疫过于严格,其实现在防疫严格的原因,还是由于病毒的强传染性,虽然重症率降低,但是一旦大范围传播,致死致残的人还是会不少,所以还是不能掉以轻心。
总之,疫情要想结束,还要:
- 传染性下降;
- 疫苗增强;
- 有特效药;
- 外部压力减小。