lvgl显示中文和自定义图标

news/2024/11/16 13:44:25/

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;}

http://www.ppmy.cn/news/572055.html

相关文章

LVGL font 字库管理(lv_font.c)

更多源码分析请访问:LVGL 源码分析大全 LVGL font 字库管理目录 概述1、内置字体(Built-in fonts)1.1、 源码分析1.2、字体生成2、外挂字体(freetype)2.1、源码分析3、字体渲染4、多字库支持5、总结概述 LVGL框架中对于字库提供了三个接口(在lvgl/src/font/lv_font.c中)用…

介绍两个LVGL开发工具,让你做出更好的UI

环境 V公众号南山府嵌入式回复4001获取 NXP GUI-Guider 介绍的第一个就是恩智浦官方提供的,现在已经更新到1.4.1版本,相对前面的版本,变化还是挺大的,无论是界面设计还是其他的做的都挺不错的。而且特别好的一点是,支…

linux磁盘管理命令 lv,linux 磁盘管理(二)LVM逻辑卷管理及基本操作

上一章我们说完了硬盘的分区、格式化与挂载分区,用是可以正常使用了,但是一旦出现系统分区不够用了,我们不得不备份、删除相关数据或者重新规划分区来满 足系统的需要,那么如何才能解决这类的问题呢?这就可以用到我们标…

Ansible自动运维————实验

0、创建新的虚拟机,使用镜像RHEL8.5,要求/boot目录为512N,/home目录为1Gb,交换空间为2Gb,其他空间给)目录。 1、将该主机作为 Ansible 控制节点,克隆该虚拟机,将克隆的虚拟机作为受控节点&#…

教你一分钟在Linux上控制机群快速部署任务,自动化运维工具:ansible,各个模块的使用

blockinfile模块使用: 在node1上文件ansible_text文件中写入内容 ansible 然后使用blockinfile模块,在文件中插入内容 blockinfile insert content 然后插入内容 blockinfile with marker 且使用指定标记: marker#{mark}test 在blockinfile insert conte…

Configuration Error: Can't find bundle for base name src.config.lvg, locale zh_CN

Configuration Error: Cant find bundle for base name src.config.lvg, locale zh_CNQ 其中src.config.lvg是配置文件,如果想要test.java调用配置文件,那么这两个文件放的位置有什么要求,才能保证test.java文件调用配置文件?

LVGL之学习篇(一)

LVGL之学习篇(一) 学习目的 LVGL简介 LVGL本身是一个图形库,前身是litterVGL。其作者是来自匈牙利的Gabor Kiss-Vamosikisvegabor,LVGL用C语言编写,以实现最大的兼容性(与C兼容),模拟器可在没有嵌入式硬件的PC上启动嵌入式GUI设计…

LVG 逻辑卷挂载方法

如果安装系统时候用到了LVG(逻辑卷管理),那么LVM分区不能够通过普通挂载方式来挂载。 普通的挂载方式下我们可以指定分区格式,然后挂载: #mount -t ext3 /dev/hdb1 /mnt/hdb1 对LVM分区进行挂载,前提要能够…