2740|2

402

帖子

9

TA的资源

纯净的硅(初级)

楼主
 

【平头哥RVB2601创意应用开发】lvgl使用1——标签 [复制链接]

 

RVB2601上尝试屏幕也差不多有几个月了,勉强算是有些心得,之前零零散散写了东西,这里把它整理了一下,这是第一篇——字体使用。

RVB2601的源代码中使用little vgl的标签来显示文字,根据调用不同的字体库实现文字大小的变化,我们知道RVB2601的屏是一个128*64的单色屏,因此其上使用的文字不会超过这个范围。

打开lv_font源文件夹,可以看到已经定义了一些高度8~48像素的文字的字体,具体怎么使用,例程很简单,大家一看就明白,也有不少小伙伴发了心得,我在这里只简单介绍一下如何更换字体,主要是修改lv_conf.h文件,这里以显示中文为例。

lvgl中,缺省是不支持中文的,如果在label中尝试使用中文文字,那么什么都不会显示。因此要让其显示中文,需要修改使用的字体,尝试了自带的各种字体之后,发现只有lv_font_simsun_16_cjk字体可以支持中文。修改方法也很简单,在lv_conf.h文件中,可以查看文字的定义,如下:

#define LV_FONT_SIMSUN_16_CJK            1  /*1000 most common CJK radicals*/

说明v_font_simsun_16_cjk字体是可用的,另外查看所用的缺省字体如下:

#define LV_THEME_DEFAULT_FONT_SMALL         &lv_font_montserrat_14

#define LV_THEME_DEFAULT_FONT_NORMAL        &lv_font_montserrat_14

#define LV_THEME_DEFAULT_FONT_SUBTITLE      &lv_font_montserrat_14

#define LV_THEME_DEFAULT_FONT_TITLE         &lv_font_montserrat_14

如果希望中文为主显示,可以修改缺省字体为lv_font_simsun_16_cjk,如下:

#define LV_THEME_DEFAULT_FONT_NORMAL        &lv_font_simsun_16_cjk

再到label中使用,就能“非常有限”的使用中文了,字体库中的中文相对较少,不一定能满足需要。比如我们尝试显示如下文字:“这是一个简单的测试例。”会发现显示如下:

 

文字缺失得太多,基本不可直接使用。

于是考虑自己做一个字库来用,事实上,网上可以找到不少很好(免费)的字模软件,但我还没找到一款可以直接在lvgl中使用,自己尝试做一款。

字体源文件是个文本文件,多看几遍也就猜出是什么意思了,这里不展开介绍,有兴趣讨论加我好友单聊。做了一个小工具:

 

网上随便找几张图片,比如米老鼠、喜羊羊、简笔画的恐龙等等,载入图片

 

选择文字高度,尝试预览一下:

 

发现淡了点,可以加大颜色阈值

 

符合心意之后,用一个符号(可以是标点、英文、数字、中文……)来记录,在以后的使用中,label框中调用这个符号显示信息。

确定之后,不再支持修改文字高度。类似的我们再添加一点其它文字。比如某个恐龙。

 

完成以后试试效果,使用CDK的例程ch2601-gui-demo,将lv_label_set_text中的字符串改为自定义字库时所用的符号,修改lvgl\v7.4.3\src\lv_font\font.h文件,添加

LV_FONT_DECLARE(lv_user_test)

lvgl\v7.4.3\src\lv_conf_kconfig.h中添加

#define CONFIG_LV_THEME_DEFAULT_FONT_NORMAL &lv_user_test

lvgl\v7.4.3\lv_conf.h中修改

#define LV_THEME_DEFAULT_FONT_NORMAL        &lv_user_test

修改完成以后,我们尝试显示一个“恐@M\n4”的标签:

lv_label_set_text(p, "恐@M\n4");

其中“恐”指的是恐龙,“@”是蛇,“M”是米老鼠,“\n”是回车,“4”是“天道酬勤”四个字。效果如下:

 

 

哈哈,字体文件还是挺有效的,字母汉字数字标点都能用,各种宽度都支持。

PS:发之前给一个朋友看了,他说“你这是画图,不是文字”,我回答,这就是文字,lvgl使用的文字不像windows可以使用矢量字体,每个字体内的文字数量和大小都是固定的,说是多少像素就是多少像素。

最新回复

好奇,字体源文件是个文本文件,多看几遍也就猜出是什么意思了,不好猜   详情 回复 发表于 2022-5-22 15:46
点赞 关注
 
 

回复
举报

6828

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

好奇,字体源文件是个文本文件,多看几遍也就猜出是什么意思了,不好猜

点评

好猜的,比如“!”是“0xff, 0xcc”,转换一下“11111111 11001100”屏幕上看到是两列,竖着5个像素,空一格,又是一个像素。结合box_w = 2, .box_h = 7, .ofs_x = 3, .ofs_y = 1,  详情 回复 发表于 2022-5-22 23:24
 
 
 

回复

402

帖子

9

TA的资源

纯净的硅(初级)

板凳
 
Jacktang 发表于 2022-5-22 15:46 好奇,字体源文件是个文本文件,多看几遍也就猜出是什么意思了,不好猜

好猜的,比如“!”是“0xff, 0xcc”,转换一下“11111111 11001100”屏幕上看到是两列,竖着5个像素,空一格,又是一个像素。结合box_w = 2, .box_h = 7, .ofs_x = 3, .ofs_y = 1,基本能看出来是什么意思了。再随便找几个验证一下,就知道猜得没错。

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表