
LVGL
文章平均质量分 65
LVGL 图形库相关的介绍
爱洋葱
One battle, one person
展开
-
LVGL (12) Areas 合并与更新
目录区域之间的关系独立区域大面积重叠区域小面积重叠包含超出屏幕代码调用在 LVGL 中,区域被定义为 lv_area_t 结构体,它通过 x1, y1, x2, y2,来代表一个矩形的区域;/** Represents an area of the screen.*/typedef struct { lv_coord_t x1; lv_coord_t y1; lv_coord_t x2; lv_coord_t y2;} lv_area原创 2022-05-06 00:39:37 · 5464 阅读 · 7 评论 -
LVGL (11) 更新 Layout 依据
LVGL 是以 obj 为基础衍生出来的一套绘制;每个 obj 都包含了 2 个字段:layout_inv / scr_layout_inv;typedef struct _lv_obj_t {...... uint16_t layout_inv : 1; // 改 obj 的 layout 是否需要更新 uint16_t scr_layout_inv : 1; // screen 的 layout 是否需要更新......} lv_obj_t;可以看到,原创 2022-05-06 00:34:56 · 3105 阅读 · 0 评论 -
LVGL (10) 移植流程
目录1、下载源码2、目录结构介绍3、移植前注意事项4、开始移植4.1、改文件名字4.1.1、对接 platform/chip 的部分4.1.2、LVGL 配置文件4.2、移植显示驱动4.3、配置 LVGL4.3.1、屏幕尺寸的配置4.3.2、颜色相关配置4.3.3、内存相关配置4.3.4、底层的配置4.3.5、日志4.3.6、其他(显示帧率等)4.3.7、编译属性4.3.8、裁剪组件4.3.9、开启/关闭 Demo4.4、加入文件到原创 2022-05-06 00:32:13 · 18467 阅读 · 14 评论 -
LVGL (9) Event 机制实现
Event PreviewLVGL 中包含了一个 Event 事件子系统,并定义了很多事件:/** * Type of event being sent to the object. */typedef enum { LV_EVENT_ALL = 0, /** Input device events*/ LV_EVENT_PRESSED, /**< The object has been pressed*/ LV_EVENT_P原创 2022-05-06 00:19:04 · 7892 阅读 · 2 评论 -
LVGL (8) 绘制流程
Preview整个 LVGL Framework 的运转,都是基于 LVGL 中定义的所谓的 ”Timer“ 定时器的,系统需要给 LVGL 一个 ”心跳“,LVGL Framework 才可以正常的运转起来;基于这样的一个框架,LVGL 定义了两个函数,需要与系统进行对接:lv_tick_inc:用于系统告知 LVGL 时间; lv_timer_handler:用于处理 LVGL 的 timer 事件典型的做法是,SystemTick 中调用 lv_tick_inc 来告知 LVGL 时间原创 2022-05-06 00:12:50 · 13814 阅读 · 14 评论 -
LVGL (7) 显示对接
目录LVGL 显示缓冲区LVGL 显示驱动小结lv_disp_drv_register 分析lv_disp_drv_init 分析lv_disp_drv_register 分析注意LVGL 是 GUI 的图形绘制库,既然是图形绘制,那么就需要考虑 2 点:开辟绘制的 buffer; 对接底层实际绘制到屏幕的驱动;LVGL 显示缓冲区在 LVGL v8 上,用于绘制的 buffer,使用 lv_disp_draw_buf_t 结构体进行描述:/** * St原创 2022-05-05 23:57:39 · 7993 阅读 · 8 评论 -
LVGL (6) 基础对象 Obj 分析
LVGL 中使用 lv_obj_t 来对常用的对象进行抽象:typedef struct _lv_obj_t { const lv_obj_class_t * class_p; struct _lv_obj_t * parent; _lv_obj_spec_attr_t * spec_attr; _lv_obj_style_t * styles;#if LV_USE_USER_DATA void * user_data;#endif lv_area_...原创 2022-05-05 23:47:00 · 6074 阅读 · 6 评论 -
LVGL (5) GC 全局变量定义
LVGL 中,有一个 lv_gc.h 文件,代码中很多全局变量都是在这里定义的:#define LV_DISPATCH(f, t, n) f(t, n)#define LV_DISPATCH_COND(f, t, n, m, v) LV_CONCAT3(LV_DISPATCH, m, v)(f, t, n)#define LV_DISPATCH00(f, t, n) LV_DISPATCH(f, t, n)#define LV_DISPATCH01(f,...原创 2022-05-05 23:41:55 · 3061 阅读 · 0 评论 -
LVGL (4) 对齐
参考对齐LVGL 可以指定对象的对齐方式,以及参考的对齐,比如:参照父对象对齐; lv_obj_set_align(obj, LV_ALIGN_...); 参照父对象对齐后,在设置坐标位置; lv_obj_align(obj, LV_ALIGN_..., x, y); 参照另一个对象(无父子关系)对齐后,设置坐标位置; lv_obj_align_to(obj_to_align, obj_referece, LV_ALIGN_..., x, y); 对齐的类型...原创 2022-05-05 23:40:05 · 3098 阅读 · 0 评论 -
LVGL (3) 盒子模型
LVGL 遵循 CSS 的 border-box 模型。 对象的“盒子”由以下部分构成:边界(bounding):元素的宽度/高度围起来的区域(整个盒子)。 边框(border):边框有大小和颜色等属性(相当于盒子的厚度和它的颜色)。 填充(padding):对象两侧与其子对象之间的空间(盒子的填充物)。 内容(content):如果边界框按边框宽度和填充的大小缩小,则显示其大小的内容区域(盒子实际装东西的区域)。 轮廓(outline) :LVGL中没有外边距(margin)的概念(盒子之间的原创 2022-05-05 23:39:02 · 2469 阅读 · 0 评论 -
LVGL (2) 图层
LVGL 具有图层(Layer)的概念,默认规则是最后创建的在最上层,一般我们都是使用在 lv_scr_act 层上面创建各种控件(widgets),每个控件其实就相当于一个个小小的图层展示在屏幕上。在 lv_scr_act 之上还有另外两个层 top_layer 和 sys_layer,这是两个特殊的层。两者在显示器的所有屏幕上都是可见的和通用的。但是,它们不会在多个物理显示器之间共享。 top_layer 始终位于默认屏幕 (lv_scr_act()) 的顶部,而 sys_layer 位于 top_原创 2022-05-05 23:37:33 · 6049 阅读 · 2 评论 -
LVGL (1) 介绍
LVGL 是现在非常流行的嵌入式 GUI 图形库,它一方面是纯 C 语言实现,易于移植,性能较好,同时支持的空间和内容较为丰富,得到了广泛的应用;LVGL 不但支持了显示(display),还同时支持了 input 设备,包括了触摸,键盘等;LVGL 支持的特性功能强大的构建块,例如按钮,图表,列表,滑块,图像等。 带有动画,抗锯齿,不透明,平滑滚动的高级图形 各种输入设备,例如触摸板,鼠标,键盘,编码器等 支持UTF-8编码的多语言 多显示器支持,如TFT,单色显示器 完全可定制的图形元原创 2022-05-05 23:34:01 · 11211 阅读 · 2 评论