LVGL学习笔记image图像相关接口

Posted 沉默的小宇宙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LVGL学习笔记image图像相关接口相关的知识,希望对你有一定的参考价值。

数据结构如下:

/**
 * Data of image
 */
typedef struct 
    lv_obj_t obj;
    const void * src; /*图像源:指向数组、文件或符号的指针*/
    lv_point_t offset;
    lv_coord_t w;          /*宽度*/
    lv_coord_t h;          /*高度*/
    uint16_t angle;    /*旋转角度*/
    lv_point_t pivot;     /*图像的旋转中心*/
    uint16_t zoom;         /*256表示无缩放,512表示2倍大小,128一半大小*/
    uint8_t src_type : 2;  /*See: lv_img_src_t*/
    uint8_t cf : 5;        /*Color format from `lv_img_color_format_t`*/
    uint8_t antialias : 1; /*Apply anti-aliasing in transformations (rotate, zoom)*/
    uint8_t obj_size_mode: 2; /*图像大小和对象大小不同时的图像大小模式。*/
 lv_img_t;

比较重要及常用的都翻译了下

常用接口基本上从字面意思也能大致猜到:

// 创建一个图片对象
void lv_img_set_src(lv_obj_t * obj, const void * src);
//设置旋转角度
void lv_img_set_angle(lv_obj_t * obj, int16_t angle);
// 设置旋转的中心点
void lv_img_set_pivot(lv_obj_t * obj, lv_coord_t x, lv_coord_t y);
/**
 * Set the zoom factor of the image.
 * @param img       pointer to an image object
 * @param zoom      the zoom factor.
 * @example 256 or LV_ZOOM_IMG_NONE for no zoom
 * @example <256: scale down
 * @example >256 scale up
 * @example 128 half size
 * @example 512 double size
 */
void lv_img_set_zoom(lv_obj_t * obj, uint16_t zoom);

//从注释中可以很清楚知道后面的zoom参数就是缩放调整比例系数

这里在使用中发现一个问题,可能也是误导很多开发着的地方,图片的源大小、及缩放后的大小决定了图片最终的显示。对象的大小在设置自适应之后会自动适配图片大小,通过下面接口就可以实现:

lv_obj_set_size(xxx, LV_SIZE_CONTENT, LV_SIZE_CONTENT);

但是反过来,图片是无法适配对象大小的。至少目前是没有找到合适的方法。

以上是关于LVGL学习笔记image图像相关接口的主要内容,如果未能解决你的问题,请参考以下文章

LVGL学习笔记image图像相关接口

基于arduino的ESP32 学习笔记 TFT_eSPI和LVGL库使用笔记

基于arduino的ESP32 学习笔记 TFT_eSPI和LVGL库使用笔记

基于arduino的ESP32 学习笔记LVGL文件系统移植,中文字库和图片显示

基于arduino的ESP32 学习笔记LVGL文件系统移植,中文字库和图片显示

基于arduino的ESP32 学习笔记LVGL文件系统移植,中文字库和图片显示