lvgl8.1缩放图片

版本1:根据比例缩放

lv_obj_t * lv_img_zoom(lv_obj_t * parent,const char * imgPath,double factor)
{
    lv_img_header_t header;
    if (lv_img_decoder_get_info(imgPath, &header) != LV_RES_OK)
    {
        return nullptr;
    }
    uint32_t objW = factor * header.w;
    uint32_t objH = factor * header.h;

    lv_obj_t * obj = lv_obj_create(parent);
    lv_obj_remove_style_all(obj);
    lv_obj_set_size(obj,objW,objH);
    lv_obj_set_scroll_dir(obj,LV_DIR_NONE);//禁止滚动

    lv_obj_t * img = lv_img_create(obj);
    lv_img_set_src(img, imgPath);
    lv_img_set_zoom(img,256 * factor);
    lv_obj_center(img);

    return obj;
}
void lv_example1(void)
{
    auto obj = lv_img_zoom(lv_scr_act(),"M:mario.png",0.7);
    lv_obj_set_pos(obj,0,0);

    auto obj2 = lv_img_zoom(lv_scr_act(),"M:mario.png",1.0);
    lv_obj_set_pos(obj2,200,0);

    auto obj3 = lv_img_zoom(lv_scr_act(),"M:mario.png",1.5);
    lv_obj_set_pos(obj3,450,0);
}

版本2:设置缩放后控件区域,计算缩放比例

void lv_img_zoom(lv_obj_t * parent,const char * imgPath,lv_area_t area)
{
    lv_img_header_t header;
    if (lv_img_decoder_get_info(imgPath, &header) != LV_RES_OK)
    {
        return ;
    }

    uint32_t imgW = header.w;
    uint32_t imgH = header.h;

    auto zreaW = std::abs(area.x2 - area.x1);
    auto zreaH = std::abs(area.y2 - area.y1);

    double radioX = static_cast<double>(zreaW) / imgW;
    double radioY = static_cast<double>(zreaH) / imgH;
    double factor = std::min(radioX,radioY);

    lv_obj_t * obj = lv_obj_create(parent);
    lv_obj_remove_style_all(obj);
    lv_obj_set_size(obj,zreaW,zreaH);
    lv_obj_set_pos(obj,area.x1,area.y1);
    lv_obj_set_scroll_dir(obj,LV_DIR_NONE);//禁止滚动

    lv_obj_t * img = lv_img_create(obj);
    lv_img_set_src(img, imgPath);
    lv_img_set_zoom(img,256 * factor);
    lv_obj_center(img);
}
void lv_example2()
{
    lv_img_zoom(lv_scr_act(),"M:mario.png",lv_area_t{0,0,100,200});
    lv_img_zoom(lv_scr_act(),"M:mario.png",lv_area_t{210,0,360,380});
    lv_img_zoom(lv_scr_act(),"M:mario.png",lv_area_t{370,0,800,480});
}

相关推荐

  1. 【前端】css控制背景图片

    2024-07-22 13:06:01       21 阅读
  2. WPF 按键图标动画示例

    2024-07-22 13:06:01       22 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-22 13:06:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-22 13:06:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-22 13:06:01       45 阅读
  4. Python语言-面向对象

    2024-07-22 13:06:01       55 阅读

热门阅读

  1. OpenStack中nova的架构

    2024-07-22 13:06:01       14 阅读
  2. MCU常见相关术语缩写说明

    2024-07-22 13:06:01       14 阅读
  3. 【Statement对象】

    2024-07-22 13:06:01       18 阅读
  4. 基于深度学习的商品推荐

    2024-07-22 13:06:01       18 阅读
  5. 鸿蒙笔记--动画

    2024-07-22 13:06:01       18 阅读
  6. c++中的printf

    2024-07-22 13:06:01       15 阅读