lv_imgbtn怎麽用的???

后面这四个参数什么意思?

拿官网例程仿真的时候,报错了


大佬在哪里啊,顶一下…

示例用法

你应该先在 lv_conf.h 中打开 LV_USE_IMGBTNLV_BUILD_EXAMPLES ,然后在你的代码中调用 lv_example_imgbtn_1(); 函数,此时应该可以正常编译通过。之后进入该函数所在的文件可以查看该函数的实现。

lv_example_imgbtn_1(); 函数中使用到的资源:

 LV_IMG_DECLARE(imgbtn_left);
 LV_IMG_DECLARE(imgbtn_right);
 LV_IMG_DECLARE(imgbtn_mid);

在这个目录中,其中存放了上面说到的资源的 c 数组之外还提供了 PNG 图片:

lvgl/examples/assets

lv_imgbtn 用法

lv_imgbtn 的用法非常简单,在官方提供文档中已经说明的很清楚:

直白的说法,正常的btn是lvgl通过矩形绘制出来的,所有的东西都是由lvgl提供,我们只是提供菜单,使用 lv_imgbtn 我们提供食材,也就是按键要按照我们提供的图片来进行显示,我给什么就显示什么。我给的东西可以有三块 src_left , src_center, src_right 也就是 lv_imgbtn 由三部分组成,我们可以指定按钮左边、中间、右边的图片,并且这些图片最终能组成一个按钮(btn)。

lv_imgbtn_set_src函数的第二个参数,是指定在什么情况下显示哪些图片,,状态有:

typedef enum {
    LV_IMGBTN_STATE_RELEASED,
    LV_IMGBTN_STATE_PRESSED,
    LV_IMGBTN_STATE_DISABLED,
    LV_IMGBTN_STATE_CHECKED_RELEASED,
    LV_IMGBTN_STATE_CHECKED_PRESSED,
    LV_IMGBTN_STATE_CHECKED_DISABLED,
    _LV_IMGBTN_STATE_NUM,
} lv_imgbtn_state_t;

这些状态定义在 lvgl/src/extra/widgets/imgbtn/lv_imgbtn.h 可以查看到。

为啥左边,中间,右边,三张图片

按照作者的想法是为了节省资源,可以从提交历史了解:

lv_imgbtn: add tiling (repeated center) feature by kisvegabor · Pull Request #569 · lvgl/lvgl (github.com)