1. lv_img 图像控件核心原理与 API 详解
在嵌入式 GUI 开发中,图像显示远非简单地将像素数据“贴”到屏幕上。lv_img 控件作为 LittlevGL(现为 LVGL)中最基础也最灵活的视觉元素之一,其设计哲学在于解耦图像数据源、渲染逻辑与布局行为。它不关心图像来自 Flash、SD 卡、内存数组,甚至不关心图像是静态位图还是动态生成的图标字体;它只负责根据当前配置,以指定的方式将图像内容“绘制”到分配给它的坐标区域内。这种抽象层级的分离,是 LVGL 能够在资源受限的 MCU 上实现高性能、高可维护 GUI 的关键。
理解 lv_img 的核心,必须从三个相互正交的维度切入:图像源(src)、尺寸与定位(size & offset)和样式与混合(style & blend)。这三个维度共同定义了最终呈现在用户面前的视觉效果。任何对 lv_img 的操作,本质上都是对这三个维度中一个或多个参数的设置与调整。本节将系统性地拆解其所有公开 API,并阐明每个参数背后的硬件约束与软件工程考量。
1.1 图像源(src):三种模式的本质差异
lv_img_set_src() 是 lv_img 控件的“心脏”,它决定了控件将要呈现什么内容。LVGL 定义了三种互斥的图像源模式,其选择直接决定了后续所有渲染行为的底层机制。
1.1.1 内存数组(LV_IMG_SRC_VARIABLE)
这是最常用、也最符合嵌入式开发直觉的模式。图像数据以 C 语言数组