当前位置: 首页 > news >正文

LVGL -按键介绍 下

4 图标

4.1 内置图标

LVGL 提供了一个很方便的 图标字体 系统,它使用了 lv_label 来显示文本或图标。你可以选择 Font Awesome 或其他图标字体,并将其直接嵌入应用中。LVGL 内建图标字体(如 LV_SYMBOL_*)是可以改变大小的。通过调整 lv_label 的样式和字体大小,可以轻松改变图标的显示大小
#include “lvgl.h”

// 创建带图标的按钮
void create_btn_with_icon(void)
{lv_obj_t *btn = lv_btn_create(lv_scr_act());lv_obj_set_size(btn, 150, 50);lv_obj_align(btn, LV_ALIGN_CENTER, 0, 50);// 添加图标(使用 Unicode 字符,比如 Font Awesome 图标)lv_obj_t *label = lv_label_create(btn);lv_label_set_text(label, LV_SYMBOL_WIFI);  // 使用内置的图标符号lv_obj_set_style_text_font(label, &lv_font_montserrat_32, 0);  // 改变为 32px 大小lv_obj_center(label);
}

在这里插入图片描述

4.2 使用图片作为图标

如果你想用自定义图片作为图标(比如 PNG、JPG),你需要将图片转化为 LVGL 支持的格式(例如,LV_IMG_DECLARE)。

🖼 示例:使用图片作为图标
首先,假设你已经有一个图标图片(比如一个 .png 格式的图标),你需要将它转换成 LVGL 支持的格式。

步骤 1:将图片转换为 C 文件
使用 LVGL 的 imageconverter 工具(在 LVGL 官方工具包中)将图标图片转换为 C 代码。然后将这个 C 文件包含到项目中。

步骤 2:加载和显示图标
假设你已经转换了一个 my_icon.c 文件,其中包含了图标的 C 数据。

#include "lvgl.h"
#include "my_icon.c"  // 引入转换后的图片数据文件// 创建一个按钮,并在按钮上显示图标
void create_btn_with_image(void)
{lv_obj_t *btn = lv_btn_create(lv_scr_act());lv_obj_set_size(btn, 150, 50);lv_obj_align(btn, LV_ALIGN_CENTER, 0, 50);// 创建一个图片对象作为图标lv_obj_t *img = lv_img_create(btn);lv_img_set_src(img, &my_icon);  // 使用转换后的图片对象lv_obj_center(img);  // 图片居中
}

4.3 自创 图标字体(如 Font Awesome)

步骤:

  1. 下载图标字体(如 Font Awesome): 你可以从 Font Awesome 官网 或其他图标字体库下载所需的字体文件。

  2. 转换字体为 LVGL 可用的格式: 使用 LVGL 自带的 fontconvert 工具,将字体文件(如 TTF 文件)转换为 LVGL 可用的 C 代码。

fontconvert --size=16 fontawesome.ttf fontawesome_16.c
  1. 将字体文件包含到项目中: 把 fontawesome_16.c 文件添加到你的项目源文件中。

  2. 在 LVGL 中设置字体: 通过 lv_obj_set_style_text_font() 来设置自定义字体。

http://www.xdnf.cn/news/230149.html

相关文章:

  • C# 高效操作excel文件
  • JavaWeb学习打卡-Day6-SpringBean管理、SpringBoot自动装配、Maven高级
  • JConsole监控centos服务器中的springboot的服务
  • AbMole小百科:OK432如何为肿瘤和免疫研究开辟新路径?
  • huggingface下载数据和模型,部分下载,本地缓存等常见问题踩坑
  • 计算机视觉综合实训室解决方案
  • Java 未来技术栈:从云原生到 AI 融合的企业级技术演进路线
  • 正向代理、反向代理机制与 Windows和Linux系统代理设置
  • 插入到word里面的用origin画的图,怎么获取图片细节?
  • AI伦理与监管:全球政策对比与中国实践
  • 【MongoDB篇】MongoDB的文档操作!
  • 数字中国的建设之路:超聚变以“智算数能”四大密钥,共建智能体时代
  • Django 学习指南:从入门到精通(大体流程)
  • VSU虚拟化主机
  • Qwen3 模型架构和能力概览
  • C# 接口 概述
  • 数据结构之双链表
  • Vue3中到达可视区域后执行
  • mac电脑pytest生成测试报告
  • Java高阶程序员学习计划(详细到天,需有一定Java基础)
  • Webug4.0通关笔记06- 第8关CSV注入
  • golang接口和具体实现之间的类型转换
  • 分布式架构:Dubbo 协议如何做接口测试
  • 定时任务xxl-job国产化改造,适配磐维数据库(PostgreSQL)
  • OpenHarmony - 小型系统内核(LiteOS-A)(完),内核编码规范
  • Arduino项目实战与编程技术详解
  • Python爬虫学习路径与实战指南 04
  • (Go Gin)Gin学习笔记(三)数据解析和绑定:结构体分析,包括JSON解析、form解析、URL解析,区分绑定的Bind方法
  • 【思考】欧洲大停电分析
  • 0.安装两个版本的JDK8和JDK17并配置环境变量