lvgl显示中文和自定义图标(代码片段)

不咸不要钱 不咸不要钱     2023-02-15     797

关键词:

lvgl显示中文和自定义图标

显示中文

制作字库

lvgl字库在线制作网址 https://lvgl.io/tools/fontconverter

下面以制作 “按钮” 这两个汉字字库为例

  • 首先选择一个字体文件 可以在网上找,也可以去电脑 C:\\Windows\\Fonts 里挑一个顺眼的
  • 确定要转换的字符


然后就会生成一个字库.c文件,将该文件添加到工程中,然后如下调用显示

void lv_example_label(void)

    lv_obj_t * label1 = lv_label_create(lv_scr_act());
    
    //声明字库
    LV_FONT_DECLARE(zhongwen);
    
    //设置字库
    lv_obj_set_style_text_font(label1, &zhongwen, 0);
    
    lv_label_set_text(label1, "按钮");

需要注意的是 生成的字库 只支持utf-8编码,例如你要制作一个 汉字 ‘按钮’ 的字库,制作字库的时候会将 ‘按’的 utf-8 码 和 制作出来的字库相关联,可以通过 ‘按’的 utf-8 码 在字库中找到对应的显示矩阵,如果 你的工程文件不是utf-8 编码,显示汉字就会出问题,可以使用notepad++ 打开文件将文件转化位utf-8格式。

显示自定义图标

显示图标


lvgl中自带了一些常用图标,可以像显示文字一样显示图标

void lv_example_label_2(void)

    lv_obj_t * label1 = lv_label_create(lv_scr_act());
    
    //显示图标
    lv_label_set_text(label1, LV_SYMBOL_AUDIO "123");


自带的图标很好用,但是有一个问题,如果想要显示汉字+图标,就会发现图标显示不出来了,因为制作的汉字字库中没有图标。这时候可以使用两个label,一个显示图标,一个显示汉字,也可以在制作汉字字库时将图标添加进去。

制作字库

  • 打开登录阿里巴巴矢量库

  • 选择喜欢的图标加入购物车,添加到项目

  • 打包下载图库

  • 将图标添加到字库中

  • 显示汉字+图标

#define MY_ICON_WIFI  "\\xEE\\x99\\x88"
void lv_example_label_2(void)

    lv_obj_t * label1 = lv_label_create(lv_scr_act());
    
    //声明字库
    LV_FONT_DECLARE(zhongwen);
    
    //设置字库
    lv_obj_set_style_text_font(label1, &zhongwen, 0);
    
    //显示汉字+图标
    lv_label_set_text(label1, MY_ICON_WIFI "按钮");

需要注意的是 图标的unicode 码 为 0xe648, 但是在工程中需要使用utf-8码 \\xEE\\x99\\x88, 需要将Unicode转换为utf-8.

unicode 转 utf-8

unicode 转 utf-8 十分简单,下面是c#的代码和小工具

private void btnConvert_Click(object sender, EventArgs e)

    string str = txbS.Text;
    //剔除空格
    string strNoSpace = str.Replace(" ", "");

    byte[] bytes = new byte[2];


    bytes[1] = Convert.ToByte(strNoSpace.Trim().Substring(0, 2), 16);
    bytes[0] = Convert.ToByte(strNoSpace.Trim().Substring(2, 2), 16);

    txbD.Text = System.Text.Encoding.Unicode.GetString(bytes);

    byte[] utf8 = Encoding.UTF8.GetBytes(txbD.Text);
    string s3 = ""; 
    foreach (byte b in utf8)
    
        // s3 += Convert.ToString(b, 16) + " ";
        s3 += string.Format("0:X2", b) + " ";

    
    txbD.Text = s3;


esp32基础应用之lvgl显示中文(代码片段)

...简介该工程在《ESP32基础应用之LVGL基础》之上实现中文的显示。参考文章《ESP32IDFLVGL8.0flash外部字库显示中文显示》2工程实现2.1制作字库使用软件LvglFontToolV0.4自作二进制字库文件。 查看详情

lvgl电池电量显示(代码片段)

#include"lvgl/lvgl.h"#defineOUTLINE_W50//电池图标宽度#defineOUTLINE_H25//电池图标高度voidlv_anim_cb(void*p,int32_tv)//实现变色效果,电池电量低于20%红色staticint32_tcnt;if(cnt>=OUTLINE_W*0.2&&v<O 查看详情

esp32基础应用之lvgl显示中文(代码片段)

...简介该工程在《ESP32基础应用之LVGL基础》之上实现中文的显示。参考文章《ESP32IDFLVGL8.0flash外部字库显示中文显示》2工程实现2.1制作字库使用软件LvglFontToolV0.4自作二进制字库文件。在电脑(C:\\Windows\\Fonts)找到合适的字... 查看详情

基于arduino的esp32学习笔记lvgl文件系统移植,中文字库和图片显示(代码片段)

...LVGL文件系统,读取SD卡中的中文字库和图片,并显示在屏幕上硬件准备ESP-WROOM-32E开发板ST7789240x2401.3寸SPI接口LCD屏16位色深RGB565SD卡插槽模 查看详情

lvgl8基础语法-设置中文(代码片段)

LVGL中文字体字库下载网站点击进入LVGL字库在线剪裁点击进入先下载字体包,然后通过工具裁剪字体包,达到轻量移植选择你喜欢的风格按照图片提示剪裁剪裁完得到C文件拖入工程,所有依赖准备结束代码调试//声明... 查看详情

javascript从其他来源触发youtube播放,删除占位符图片和自定义播放图标(代码片段)

查看详情

基于arduino的esp32学习笔记lvgl文件系统移植,中文字库和图片显示(代码片段)

...LVGL文件系统,读取SD卡中的中文字库和图片,并显示在屏幕上硬件准备ESP-WROOM-32E开发板ST7789240x2401.3寸SPI接口LCD屏16位色深RGB565SD卡插槽模块和SD卡一张软件准备VSCODE+PlatformIO各模块之间的连线可以看下我之前的博客相关... 查看详情

基于arduino的esp32学习笔记lvgl文件系统移植,中文字库和图片显示(代码片段)

...LVGL文件系统,读取SD卡中的中文字库和图片,并显示在屏幕上硬件准备ESP-WROOM-32E开发板ST7789240x2401.3寸SPI接口LCD屏16位色深RGB565SD卡插槽模块和SD卡一张软件准备VSCODE+PlatformIO各模块之间的连线可以看下我之前的博客相关... 查看详情

lvgl开发|lv_lib_100ask之lvgl中文输入(lv_100ask_pinyin_ime)-lvgl中文输入(代码片段)

...09;,它和lv_keyboard没有什么区别,只是增加了支持中文拼音输入法的功能。所以将其称为:支持中文拼音输入法的LVGL键盘(lv_keyboard)部件增强插件。正常来说,只要是lvgl能运行的环境lv_100ask_pinyin_ime也能够运行࿰... 查看详情

lvgl8基础语法-图片显示(代码片段)

找到你想显示的图片使用图片生成工具lvgl官方图片生成工具修改图片尺寸,按你的屏幕尺寸来添加数组文件到模拟器,单片机项目则路径自己定义声明数组和图片空间语法LV_IMG_DECLARE(zzr);voidlv_example_roller_3(void)lv_obj_t*img... 查看详情

lvgl8基础语法-标签(代码片段)

创建标签lv_obj_t*label=lv_label_create(lv_scr_act());基于codeblock模拟器运行显示自定义文本//创建标签lv_obj_t*label=lv_label_create(lv_scr_act());//设置文本方式1lv_label_set_text(label,"wenmou9");自定义文本居中显示//创建标签lv 查看详情

lvgl8基础语法-图片显示(代码片段)

找到你想显示的图片使用图片生成工具lvgl官方图片生成工具修改图片尺寸,按你的屏幕尺寸来添加数组文件到模拟器,单片机项目则路径自己定义声明数组和图片空间语法LV_IMG_DECLARE(zzr);voidlv_example_roller_3(void)lv_obj_t*img... 查看详情

php显示具有自定义摘录长度的帖子和自定义在wordpress中阅读更多文本(代码片段)

查看详情

lvgl|lvglv8教程(lvgl中文文档教程,开始更新lvglv8.x文档教程,超详细!)(代码片段)

...,这个是我在做项目时根据lvgl官方文档做出来的lvgl中文文档(持续更新维护),不仅仅只是生硬照搬lvgl官方文档的翻译,同时总结了我们在实际开发中遇到的各种细节,让这个文档更加适合我们在实际开发中的需... 查看详情

lvgl(v8.2)自定义字体实现多国语言切换功能(代码片段)

...子产品,如果是面向出口贸易,那么多国语言的显示功能必不可少。那么如何使用LVGL来实现多语言功能呢?先来实现一个简单的语言功能切换demo:当 查看详情

lvgl(v8.2)自定义字体实现多国语言切换功能(代码片段)

...子产品,如果是面向出口贸易,那么多国语言的显示功能必不可少。那么如何使用LVGL来实现多语言功能呢?先来实现一个简单的语言功能切换demo:当 查看详情

lvgl(v8.2)自定义字体实现多国语言切换功能(代码片段)

...子产品,如果是面向出口贸易,那么多国语言的显示功能必不可少。那么如何使用LVGL来实现多语言功能呢?先来实现一个简单的语言功能切换demo:当 查看详情

lvgl开发|支持中文输入法的lvgl部件(lvgl中文输入)

【开源】让LVGL支持中文输入法!LVGL中文输入法插件我将它称为插件,因为它是在lv_keyboard的基础上编写的一个自定义部件(我定义创建接口为:lv_100ask_keyboard_create(lv_obj_t*parent));),它和lv_keyboard没有什么... 查看详情