LVGL 图片滚筒菜单
时间: 2023-10-06 16:07:08 浏览: 260
LVGL(Light and Versatile Graphics Library)是一款开源的嵌入式图形库,支持多种平台,可以用于各种嵌入式设备的图形界面设计。其中,图片滚筒菜单是 LVGL 中的一个组件,可以用于实现滚动展示一些图片或者图标,用户可以通过滚动菜单来选择需要的图片或者图标。
以下是一个简单的 LVGL 图片滚筒菜单的实现示例:
```c
#include "lvgl/lvgl.h"
// 图片数组
static const lv_img_dsc_t * images[] = {
&img1,
&img2,
&img3,
&img4,
// ...
};
void create_image_roll_menu(lv_obj_t * parent) {
lv_obj_t * roll_menu = lv_roller_create(parent, NULL);
lv_roller_set_options(roll_menu, " ");
lv_roller_set_visible_row_count(roll_menu, 3);
lv_roller_set_auto_fit(roll_menu, true);
lv_roller_set_hor_fit(roll_menu, LV_FIT_TIGHT);
lv_roller_set_ver_fit(roll_menu, LV_FIT_TIGHT);
lv_roller_set_style(roll_menu, LV_ROLLER_STYLE_BG, &lv_style_transp_tight);
for (int i = 0; i < sizeof(images) / sizeof(lv_img_dsc_t *); i++) {
lv_obj_t * img = lv_img_create(parent, NULL);
lv_img_set_src(img, images[i]);
lv_roller_add_option(roll_menu, "");
lv_roller_set_option_ctrl(roll_menu, i, img);
}
}
```
该示例代码中,首先定义了一个图片数组 `images`,其中包含了需要展示的多张图片。然后,通过 `create_image_roll_menu` 函数来创建一个滚筒菜单,并将图片添加到菜单中。具体实现中,使用 `lv_roller_create` 函数创建一个滚筒菜单对象,通过 `lv_roller_set_options` 函数设置菜单项,通过 `lv_roller_set_visible_row_count` 函数设置可见行数,通过 `lv_roller_set_auto_fit` 函数设置自适应宽度和高度,通过 `lv_roller_set_hor_fit` 和 `lv_roller_set_ver_fit` 函数设置水平和垂直适配方式,通过 `lv_roller_set_style` 函数设置菜单样式。
接下来,通过循环遍历 `images` 数组,生成每个图片对应的图像对象,并添加到滚筒菜单中。具体实现中,使用 `lv_img_create` 函数创建一个图像对象,使用 `lv_img_set_src` 函数设置图像对象的源图片,使用 `lv_roller_add_option` 函数添加一个空白菜单项,使用 `lv_roller_set_option_ctrl` 函数将图像对象与菜单项关联起来。
以上就是一个简单的 LVGL 图片滚筒菜单的实现示例,你可以根据自己的需求进行修改和扩展。
阅读全文