1017|2

339

帖子

3

资源

一粒金砂(高级)

【平头哥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中使用,就能“非常有限”的使用中文了,字体库中的中文相对较少,不一定能满足需要。比如我们尝试显示如下文字:“这是一个简单的测试例。”会发现显示如下:

image-20220521232841-1.jpeg  

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

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

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

image-20220521232842-2.png  

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

image-20220521232842-3.png  

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

image-20220521232842-4.png  

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

image-20220521232842-5.png  

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

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

image-20220521232842-6.png  

完成以后试试效果,使用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”是“天道酬勤”四个字。效果如下:

image-20220521232842-7.jpeg  

 

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

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


回复

7110

帖子

0

资源

五彩晶圆(中级)

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

点评

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

回复

339

帖子

3

资源

一粒金砂(高级)

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 技术支持

相关文章 更多>>
    推荐帖子
    请教:PIC18F25K40的PWM初始化设置!无法输出PWM波形!

    按照数据手册的PWM设置步骤,PWM初始化函数如下: void PWM_Init(void) { CCPTMRS = 0; //此行可注释,默 ...

    请教大神CS+不显示Simulator GUI界面是啥原因了?

    其他设置都已经搞定,程序Build&Download后不自动显示Simulator GUI界面,RL78/G14,Debug Tool也已经选择了RL78 Simulator,r ...

    【奖品发送完毕】:Fluke高分辨率热像仪~小细节也不放过!免费体验报名中

    【奖品发送完毕】 如有问题请联系管理员QQ:375277221 活动详情:Fluke高分辨率热像仪~小细节也不放过!免费体验报名 ...

    【获奖名单】Microchip 安全解决方案系列研讨会第7场|微处理器的安全引导

    颁奖啦~Microchip 安全解决方案系列研讨会第7场|微处理器的安全引导 领奖方式 请获奖网友在2020年9月28日前微信扫描 ...

    开箱K210和ESP32-S3BOX-LITE

    非常感谢EEWORLD和得捷电子提供的入围机会,利用机会下单了两块开发板。我做的项目是利用语音进行智能识别。希望后续能够好好开 ...

    【创龙科技全志A40i开发板】基于虚拟机镜像搭建开发环境与Qt开发体验

    fef0861a17987176d336217798d883e0 前言 基于光盘的SDK文件进行安装比较繁琐,并且各种依赖安装,构建可能失败。所以为了 ...

    关闭
    站长推荐上一条 1/6 下一条

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

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

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

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