weixin_49291309 2025-06-14 19:21 采纳率: 0%
浏览 59

使用lvgl的lv_animimg_set_src时候出现的问题

void setup_scr_screen(lv_ui *ui)
{
  //Write codes screen
  ui->screen = lv_obj_create(NULL);
  lv_obj_set_size(ui->screen, 480, 360);
  lv_obj_set_scrollbar_mode(ui->screen, LV_SCROLLBAR_MODE_OFF);

  //Write style for screen, Part: LV_PART_MAIN, State: LV_STATE_DEFAULT.
  lv_obj_set_style_bg_opa(ui->screen, 255, LV_PART_MAIN|LV_STATE_DEFAULT);
  lv_obj_set_style_bg_color(ui->screen, lv_color_hex(0xffffff), LV_PART_MAIN|LV_STATE_DEFAULT);
  lv_obj_set_style_bg_grad_dir(ui->screen, LV_GRAD_DIR_NONE, LV_PART_MAIN|LV_STATE_DEFAULT);

  //Write codes screen_animimg_1

  ui->screen_animimg_1 = lv_animimg_create(ui->screen);
  
  lv_animimg_set_src(ui->screen_animimg_1, (const void **) screen_animimg_1_imgs, 3);

  lv_animimg_set_duration(ui->screen_animimg_1, 1000*3);
  lv_animimg_set_repeat_count(ui->screen_animimg_1, LV_ANIM_REPEAT_INFINITE);
  lv_animimg_start(ui->screen_animimg_1);
  lv_obj_set_pos(ui->screen_animimg_1, 0, 0);
  lv_obj_set_size(ui->screen_animimg_1, 480, 360);


  // img = lv_img_create(ui->screen);
  // lv_img_set_src(img, (const void **) screen_animimg_1_imgs[0]);
    // lv_obj_align(img, LV_ALIGN_CENTER, 0, 0); // 居中显示
    // lv_obj_set_size(img, 480, 360);           // 设置显示尺寸

  //The custom code of screen.

  //Update current screen layout.
  lv_obj_update_layout(ui->screen);

}

其中


const char * screen_animimg_1_imgs[3] = { 
  "/Image23.jpg",
  "/Image24.jpg",
  "/Image25.jpg",
};

为什么使用注释掉的

lv_img_set_src(img, (const void **) screen_animimg_1_imgs[0]);

可以正常展示图片,而使用上述的

 lv_animimg_set_src(ui->screen_animimg_1, (const void **) screen_animimg_1_imgs, 3);

会报错表示:

[lv_img_set_src][87] don't find cache:/Image23.jpg
[_lv_img_cache_open][332] cache miss:/Image23.jpg
[lv_img_set_src][87] don't find cache:/Image24.jpg
[_lv_img_cache_open][332] cache miss:/Image24.jpg
[lv_img_set_src][87] don't find cache:/Image25.jpg
[_lv_img_cache_open][332] cache miss:/Image25.jpg

  • 写回答

5条回答 默认 最新

  • 阿里嘎多学长 2025-06-14 19:21
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你使用 LVGL 库时,遇到了 lv_animimg_set_src 函数出现问题。根据你提供的代码,问题可能出现在 setup_scr_screen 函数中。

    首先,需要检查 lv_obj_create 函数的返回值是否为 NULL,确保创建的对象不为空。

    其次,需要检查 lv_animimg_set_src 函数的参数是否正确,确保传入的图片资源路径正确。

    如果问题仍然存在,可以尝试使用 LVGL 库的 debug 工具,例如 lv_debug_draw 函数,来检查对象的创建和设置是否正确。

    如果你提供了更多的代码和错误信息,我可以更好地帮助你解决问题。

    核心代码

    void setup_scr_screen(lv_ui *ui)
    {
        ui->screen = lv_obj_create(NULL);
        if(ui->screen == NULL) {
            // handle error
        }
        // ...
        lv_animimg_set_src(ui->screen, "path/to/image.png");
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月14日