1<h1 align="center"> LVGL - Light and Versatile Graphics Library</h1>
2<h2 align="center"> LVGL - 轻量级通用型图形库</h2>
3
4
5
6<p align="center">
7<img src="https://lvgl.io/assets/images/lvgl_widgets_demo.gif">
8</p>
9<p align="center">
10LVGL是一个高度可裁剪、低资源占用、界面美观且易用的嵌入式系统图形库
11</p>
12
13
14<h4 align="center">
15<a href="https://lvgl.io">官网</a> &middot;
16<a href="https://docs.lvgl.io/">文档</a> &middot;
17<a href="https://forum.lvgl.io">论坛</a>  &middot;
18<a href="https://lvgl.io/services">服务</a>  &middot;
19<a href="https://docs.lvgl.io/master/examples.html">例程</a>
20</h4>
21
22
23[English](./README.md) | **中文** |
24
25
26---
27
28#### 目录
29- [概况与总览](#概况与总览)
30- [如何入门](#如何入门)
31- [例程](#例程)
32- [服务](#服务)
33- [如何向社区贡献](#如何向社区贡献)
34
35## 概况与总览
36### 特性
37* 丰富且强大的模块化[图形组件](https://docs.lvgl.io/master/widgets/index.html):按钮 (buttons)、图表 (charts)、列表 (lists)、滑动条 (sliders)、图片 (images) 等
38* 高级的图形引擎:动画、抗锯齿、透明度、平滑滚动、图层混合等效果
39* 支持多种[输入设备](https://docs.lvgl.io/master/overview/indev.html):触摸屏、 键盘、编码器、按键等
40* 支持[多显示设备](https://docs.lvgl.io/master/overview/display.html)
41* 不依赖特定的硬件平台,可以在任何显示屏上运行
42* 配置可裁剪(最低资源占用:64 kB Flash,16 kB RAM)
43* 基于UTF-8的多语种支持,例如中文、日文、韩文、阿拉伯文等
44* 可以通过[类CSS](https://docs.lvgl.io/master/overview/style.html)的方式来设计、布局图形界面(例如:[Flexbox](https://docs.lvgl.io/master/layouts/flex.html)、[Grid](https://docs.lvgl.io/master/layouts/grid.html)45* 支持操作系统、外置内存、以及硬件加速(LVGL已内建支持STM32 DMA2D、NXP PXP和VGLite)
46* 即便仅有[单缓冲区(frame buffer)](https://docs.lvgl.io/master/porting/display.html)的情况下,也可保证渲染如丝般顺滑
47* 全部由C编写完成,并支持C++调用
48* 支持Micropython编程,参见:[LVGL API in Micropython](https://blog.lvgl.io/2019-02-20/micropython-bindings)
49* 支持[模拟器](https://docs.lvgl.io/master/get-started/pc-simulator.html)仿真,可以无硬件依托进行开发
50* 丰富详实的[例程](https://github.com/lvgl/lvgl/tree/master/examples)
51* 详尽的[文档](http://docs.lvgl.io/)以及API参考手册,可线上查阅或可下载为PDF格式
52
53### 硬件要求
54
55<table>
56  <tr>
57    <td> <strong>要求</strong> </td>
58    <td><strong>最低要求</strong></td>
59    <td><strong>建议要求</strong></td>
60  </tr>
61  <tr>
62    <td><strong>架构</strong></td>
63    <td colspan="2">16、32、64位微控制器或微处理器</td>
64  </tr>
65  <tr>
66    <td> <strong>时钟</strong></td>
67    <td> &gt; 16 MHz</td>
68    <td> &gt; 48 MHz</td>
69  </tr>
70
71  <tr>
72    <td> <strong>Flash/ROM</strong></td>
73    <td> &gt; 64 kB </td>
74    <td> &gt; 180 kB</td>
75  </tr>
76
77  <tr>
78    <td> <strong>Static RAM</strong></td>
79    <td> &gt; 16 kB </td>
80    <td> &gt; 48 kB</td>
81  </tr>
82
83  <tr>
84    <td> <strong>Draw buffer</strong></td>
85    <td> &gt; 1 &times; <em>hor. res.</em> pixels </td>
86    <td> &gt; 1/10屏幕大小 </td>
87  </tr>
88
89  <tr>
90    <td> <strong>编译器</strong></td>
91    <td colspan="2"> C99或更新 </td>
92  </tr>
93</table>
94
95*注意:资源占用情况与具体硬件平台、编译器等因素有关,上表中仅给出参考值*
96
97### 已经支持的平台
98LVGL本身并不依赖特定的硬件平台,任何满足LVGL硬件配置要求的微控制器均可运行LVGL。
99如下仅列举其中一部分:
100
101- NXP: Kinetis, LPC, iMX, iMX RT
102- STM32F1, STM32F3, STM32F4, STM32F7, STM32L4, STM32L5, STM32H7
103- Microchip dsPIC33, PIC24, PIC32MX, PIC32MZ
104- [Linux frame buffer](https://blog.lvgl.io/2018-01-03/linux_fb) (/dev/fb)
105- [Raspberry Pi](http://www.vk3erw.com/index.php/16-software/63-raspberry-pi-official-7-touchscreen-and-littlevgl)
106- [Espressif ESP32](https://github.com/lvgl/lv_port_esp32)
107- [Infineon Aurix](https://github.com/lvgl/lv_port_aurix)
108- Nordic NRF52 Bluetooth modules
109- Quectel modems
110
111LVGL也支持:
112- [Arduino library](https://docs.lvgl.io/master/get-started/arduino.html)
113- [PlatformIO package](https://platformio.org/lib/show/12440/lvgl)
114- [Zephyr library](https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_LVGL.html)
115- [ESP32 component](https://docs.lvgl.io/master/get-started/espressif.html)
116- [NXP MCUXpresso component](https://www.nxp.com/design/software/embedded-software/lvgl-open-source-graphics-library:LITTLEVGL-OPEN-SOURCE-GRAPHICS-LIBRARY)
117- [NuttX library](https://docs.lvgl.io/master/get-started/nuttx.html)
118- [RT-Thread RTOS](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/packages-manual/lvgl-docs/introduction)
119
120
121## 如何入门
122请按照如下顺序来学习LVGL:
1231. 使用[网页在线例程](https://lvgl.io/demos)来体验LVGL(3分钟)
1242. 阅读文档[简介](https://docs.lvgl.io/master/intro/index.html)章节来初步了解LVGL(5分钟)
1253. 再来阅读一下文档快速[快速概览](https://docs.lvgl.io/master/get-started/quick-overview.html)章节来了解LVGL的基本知识(15分钟)
1264. 学习如何使用[模拟器](https://docs.lvgl.io/master/get-started/pc-simulator.html)来在电脑上仿真LVGL(10分钟)
1275. 试着动手实践一些[例程](https://github.com/lvgl/lvgl/tree/master/examples)
1286. 参考[移植指南](https://docs.lvgl.io/master/porting/index.html)尝试将LVGL移植到一块开发板上,LVGL也已经提供了一些移植好的[工程](https://github.com/lvgl?q=lv_port_)
1297. 仔细阅读文档[总览](https://docs.lvgl.io/master/overview/index.html)章节来更加深入的了解和熟悉LVGL(2-3小时)
1308. 浏览文档[组件(Widgets)](https://docs.lvgl.io/master/widgets/index.html)章节来了解如何使用它们
1319. 如果你有问题可以到LVGL[论坛](http://forum.lvgl.io/)提问
13210. 阅读文档[如何向社区贡献](https://docs.lvgl.io/master/CONTRIBUTING.html)章节来看看你能帮LVGL社区做些什么,以促进LVGL软件质量的不断提高(15分钟)
133
134## 例程
135
136更多例程请参见 [examples](https://github.com/lvgl/lvgl/tree/master/examples) 文件夹。
137
138![LVGL button with label example](https://github.com/lvgl/lvgl/raw/master/docs/misc/btn_example.png)
139
140### C
141```c
142lv_obj_t * btn = lv_btn_create(lv_scr_act());                   /*Add a button to the current screen*/
143lv_obj_set_pos(btn, 10, 10);                                    /*Set its position*/
144lv_obj_set_size(btn, 100, 50);                                  /*Set its size*/
145lv_obj_add_event_cb(btn, btn_event_cb, LV_EVENT_CLICKED, NULL); /*Assign a callback to the button*/
146
147lv_obj_t * label = lv_label_create(btn);                        /*Add a label to the button*/
148lv_label_set_text(label, "Button");                             /*Set the labels text*/
149lv_obj_center(label);                                           /*Align the label to the center*/
150...
151
152void btn_event_cb(lv_event_t * e)
153{
154  printf("Clicked\n");
155}
156```
157### Micropython
158更多信息请到 [Micropython官网](https://docs.lvgl.io/master/get-started/micropython.html) 查询.
159```python
160def btn_event_cb(e):
161  print("Clicked")
162
163# Create a Button and a Label
164btn = lv.btn(lv.scr_act())
165btn.set_pos(10, 10)
166btn.set_size(100, 50)
167btn.add_event_cb(btn_event_cb, lv.EVENT.CLICKED, None)
168
169label = lv.label(btn)
170label.set_text("Button")
171label.center()
172```
173
174## 服务
175LVGL 责任有限公司成立的目的是为了给用户使用LVGL图形库提供额外的技术支持,我们致力于提供以下服务:
176
177- 图形设计
178- UI设计
179- 技术咨询以及技术支持
180
181更多信息请参见 https://lvgl.io/services ,如果有任何问题请随时联系我们。
182
183
184## 如何向社区贡献
185LVGL是一个开源项目,非常欢迎您参与到社区贡献当中。您有很多种方式来为提高LVGL贡献您的一份力量,包括但不限于:
186
187- 介绍你基于LVGL设计的作品或项目
188- 写一些例程
189- 修改以及完善文档
190- 修复bug
191
192请参见文档[如何向社区贡献](https://docs.lvgl.io/master/CONTRIBUTING.html)章节来获取更多信息。
193
194