LVGL(Light and Versatile Graphics Library)是一个轻量级的嵌入式图形库。LVGL的项目作者是来自匈牙利首都布达佩斯的 Gábor Kiss-Vámosi 。Kiss 在2016年将其发布在 GitHub上。
当时叫 LittlevGL而不是LVGL,后来作者重新命名为 LVGL,甚至连仓库地址都改了。 像一般的开源项目的那样,它是作为一个人的项目开始的。 从那时起,陆续有近 100 名贡献者参与了项目开发,使得 LVGL 逐渐成为最受欢迎的嵌入式图形库之一。LVGL 项目(包括所有存储库)在 MIT license 许可下获得许可。这意味着您甚至可以在商业项目中使用它。这不是强制性的。
它提供了创建嵌入式 GUI 所需的一切,具有易于使用的图形元素,美丽的视觉效果和低内存占用。
官网地址:https://lvgl.io/
LVGL为我们提供一个详细的英文文档手册,这个文档的在线阅读站点是:
https://docs.lvgl.io,下面还有个中文版的
百问网LVGL中文站点:http://lvgl.100ask.net,选择相应的版本v8.1
github地址:https://github.com/lvgl
• 丰富且强大的模块化图形组件:按钮 (buttons)、图表 (charts)、列表 (lists)、
滑动条 (sliders)、图片 (images)等
• 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果
• 支持多种输入设备:触摸屏、键盘、编码器、按键等
• 支持多显示设备
• 不依赖特定的硬件平台,可以在任何显示屏上运行
• 配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM)
• 基于 UTF-8 的多语种支持,例如中文、日文、韩文、阿拉伯文等
• 可以通过类 CSS的方式来设计、布局图形界面(例如:Flexbox、Grid)
• 支持操作系统、外置内存、以及硬件加速(LVGL 已内建支持 STM32 DMA2D、NXP PXP
和 VGLite)
• 即便仅有单缓冲区 (frame buffer)的情况下,也可保证渲染如丝般顺滑
• 全部由 C 编写完成,并支持 C++ 调用
• 支持 Micropython 编程,参见:LVGL API in Micropython
• 在线模拟器,支持ESP32
• 支持模拟器仿真,可以无硬件依托进行开发
• 丰富详实的例程
• 详尽的文档以及 API 参考手册,可线上查阅或可下载为 PDF 格式
• 在 MIT 许可下免费和开源
• 基本上,每个能够驱动显示器的现代控制器都适合运行 LVGL。
LVGL 项目的所有代码仓库都托管在 GitHub 上:https://github.com/lvgl
您可以从下面的列表获取到 lvgl 所有相关的代码仓库:
• lvgl 库本身有很多 例子。
• lv_demos 使用 LVGL 创建的演示。
• lv_drivers 显示和输入设备驱动程序
• 博客 博客站点的来源 (https://blog.lvgl.io)
• sim 在线模拟器网站的来源 (https://sim.lvgl.io)
• lv_sim_... 各种 IDE 和平台的模拟器项目
• lv_port_... LVGL 端口到开发板
• lv_binding_.. 绑定到其他语言
• lv_... 移植到其他平台
该项目的维护:
• 错误修复:每周按需发布
• 次要版本:每 3-4 个月
• 主要版本:大约每年
16、32 或 64 位微控制器或处理器
建议使用 16 MHz 速度或者更高
闪存/只读存储器:> 64 kB (建议使用 180 kB)
内存:8 kB(建议使用 24 kB)
1 帧缓冲器:在 MCU、外部 RAM 或显示控制器中
LVGL 的图形缓冲区:>“水平分辨率”像素(建议使用 1/10“屏幕尺寸”)
C99 或更高版本的编译器
基本 C(或C++)知识:指针、结构、回调
任何分辨率:从小型单色显示器到全高清显示器
简单的界面:一个驱动程序功能即可将渲染的图像复制到显示器
图形处理器支持
多显示器支持
自定义颜色格式支持
灵活的缓冲模式,可实现高质量、高性能和低内存使用率
同一屏幕的多个输入设备
简单的接口:一个驱动程序功能即可获取输入设备的状态
拖动、滚动对象
识别手势
键盘和编码器支持无触摸板导航
抗锯齿
带半径的矩形
带半径的边框
影子
线:
弧:
多边形
掩蔽
支持 UTF-8
抗锯齿
字距调整
自动换行和自动文本滚动
双向文本支持(混合 RTL 和 LTR)
阿拉伯语和波斯语支持
字体压缩
子像素渲染
在线和离线字体转换器
自定义字体引擎的界面
FreeType 集成示例
多语言支持
各种颜色格式:RGB、ARGB、色度键控、索引、仅 Alpha
实时对图像进行重新着色
实时缩放和旋转
图像可以放在闪存或文件中(例如SD卡)
在线和离线图像转换器
用于缓存的图像解码器
PNG 集成示例
设置微件外观
级联样式(如 CSS 中所示)
在多个小部件中重复使用这些样式
用于简单更改的本地样式
用于提供默认外观的主题
状态更改时的过渡(动画)
要运行LVGL,您只需要一个C编译器,32kB RAM和128 kB闪存,一个帧缓冲区以及至少一个用于渲染的1/10屏幕大小的缓冲区。
Code::Blocks 是一个开放源码的全功能的跨平台C/C++集成开发环境。Code::Blocks是开放源码软件。Code::Blocks由纯粹的C++语言开发完成,它使用了著名的图形界面库wxWidgets(3.x)版。对于追求完美的C++程序员,再也不必忍受Eclipse的缓慢。
阅读参考:Code::Blocks_百度百科,其他更多相关资料请自行百度搜索学习,这里不再赘述。
相关资料链接:
链接:https://pan.baidu.com/s/10fqCw72zTfnj-2iTWFgpTg
提取码:sfh7
--来自百度网盘超级会员V6的分享
若编译出现如下图错误,可根据图中所示进行解决:
我个人在实验过程中编译该程序出现了一个switch case选项的宏未定义。可尝试将该选项部分代码隐去,再次编译运行,并不影响最终结果,因为我们主要测试软件安装是否成功,以及观察运行LVGL程序的效果。
最终成功运行的效果:
开源轻量级显示框架LVGL简介
本专栏文章参考了《百问网LVGL(v8)系列课程(韦东山·监制) 基于lvgl v8.2版本》、知乎、百度百科以及其他技术博客等资料,并结合自己的所学整理而来。如有侵权,请联系删除!水平有限,欢迎各位在评论区交流讨论!