调用lv_obj_set_style_bg_img_src无法显示图片

自己在写DYN APP的时候使用了lv_obj_set_style_bg_img_src函数和APP_GET_IMG()设置对象的背景图,在模拟器中显示正常,但是在黄山派上无法显示,用lv_img_create 和 lv_img_set_src的方式是正常的。lv_obj_set_style_bg_img_src这个函数没有做到兼容吗?

可以提供一下日志或者代码吗

板级上硬件渲染还未适配bg img属性,后续适配好了再同步修改

static void draw_bg_img(lv_draw_ctx_t * draw_ctx, const lv_draw_rect_dsc_t * dsc, const lv_area_t * coords)
{
if(dsc->bg_img_src == NULL) return;
if(dsc->bg_img_opa <= LV_OPA_MIN) return;

    lv_area_t clip_area;
    if(!_lv_area_intersect(&clip_area, coords, draw_ctx->clip_area)) {
        return;
    }

    const lv_area_t * clip_area_ori = draw_ctx->clip_area;
    draw_ctx->clip_area = &clip_area;

    lv_img_src_t src_type = lv_img_src_get_type(dsc->bg_img_src);
    if(src_type != LV_IMG_SRC_SYMBOL) 
    {
        lv_img_header_t header;
        lv_res_t res = lv_img_decoder_get_info(dsc->bg_img_src, &header);
        if(res == LV_RES_OK) {
            lv_draw_img_dsc_t img_dsc;
            lv_draw_img_dsc_init(&img_dsc);
            img_dsc.blend_mode = dsc->blend_mode;
            img_dsc.recolor = dsc->bg_img_recolor;
            img_dsc.recolor_opa = dsc->bg_img_recolor_opa;
            img_dsc.opa = dsc->bg_img_opa;

            /*居中对齐*/
            if(dsc->bg_img_tiled == false) {
                lv_area_t area;
                area.x1 = coords->x1 + lv_area_get_width(coords) / 2 - header.w / 2;
                area.y1 = coords->y1 + lv_area_get_height(coords) / 2 - header.h / 2;
                area.x2 = area.x1 + header.w - 1;
                area.y2 = area.y1 + header.h - 1;

                lv_draw_img(draw_ctx, &img_dsc, &area, dsc->bg_img_src);
            }
            else {
                lv_area_t area;
                area.y1 = coords->y1;
                area.y2 = area.y1 + header.h - 1;

                for(; area.y1 <= coords->y2; area.y1 += header.h, area.y2 += header.h) {

                    area.x1 = coords->x1;
                    area.x2 = area.x1 + header.w - 1;
                    for(; area.x1 <= coords->x2; area.x1 += header.w, area.x2 += header.w) {
                        lv_draw_img(draw_ctx, &img_dsc, &area, dsc->bg_img_src);
                    }
                }
            }
        }
        else {
            LV_LOG_WARN("无法读取背景图像");
        }
    }

    draw_ctx->clip_area = clip_area_ori;

}

image

可以按照上述修改验证一下