ESP32 LVGL8.1 ——Style bg 设置样式背景 (Style 2)

提示:本博客作为学习笔记,有错误的地方希望指正

一、样式背景设置简介

  本次主要讲述lvgl的样式背景,可以设置一个样式不同的背景颜色,另外还可以设置背景的渐变色,从而实现不同炫酷的效果。

二、Style Pad API

  用于设置背景的API可以在lv_style_gen.h文件中找到,主要有以下几个API

2.1背景颜色 bg_color

  设置对象的背景颜色

2.2背景颜色透明度 bg_opa

  设置背景的不透明度。值0,LV_OPA_0或LV_OPA_TRANSP表示完全透明,256,LV_OPA_100或
LV_OPA_COVER表示完全覆盖,其他值或LV_OPA_10、LV_OPA_20等表示半透明。

2.3背景的渐变颜色 bg_grad_color

  设置背景的渐变颜色。仅在grad_dir不是时使用LV_GRAD_DIR_NONE

2.4背景渐变的方向 bg_grad_dir

  设置背景渐变的方向。可能的值为LV_GRAD_DIR_NONE/HOR/VER。

2.5前景颜色停止 bg_main_stop

  设置渐变背景色的起点。0 表示顶部/左侧,255 表示底部/右侧,128 表示中心,依此类推

2.6背景渐变颜色起始点 bg_grad_stop

  设置背景渐变颜色的起点。0 表示顶部/左侧,255 表示底部/右侧,128 表示中心,依此类推

2.7背景图片资源 bg_img_src

  设置背景图像。可以是指向lv_img_dsc_t、文件路径或LV_SYMBOL_…

2.8背景图片透明度 bg_img_opa

  设置背景图像的不透明度。值0,LV_OPA_0或LV_OPA_TRANSP表示完全透明,256,LV_OPA_100或
LV_OPA_COVER表示完全覆盖,其他值或LV_OPA_10、LV_OPA_20等表示半透明。

2.9背景图片重着色 bg_img_recolor

  设置一种颜色以混合到背景图像。

2.10背景图片重着色透明度 bg_img_recolor_opa

  设置背景图像重新着色的强度。值 0,LV_OPA_0或LV_OPA_TRANSP表示不混合,256,LV_OPA_100或LV_OPA_COVER表示完全重新着色,其他值或 LV_OPA_10、LV_OPA_20 等按比例解释。

2.11背景平铺 bg_img_tiled

  如果启用,背景图像将被平铺。可能的值为true或false。

void lv_style_set_bg_color(lv_style_t * style, lv_color_t value);			//设置背景颜色
void lv_style_set_bg_color_filtered(lv_style_t * style, lv_color_t value);	//设置背景过滤颜色
void lv_style_set_bg_opa(lv_style_t * style, lv_opa_t value);				//设置背景透明度
void lv_style_set_bg_grad_color(lv_style_t * style, lv_color_t value);		//设置背景下半部颜色
void lv_style_set_bg_grad_color_filtered(lv_style_t * style, lv_color_t value);//设置背景下半部过滤颜色
void lv_style_set_bg_grad_dir(lv_style_t * style, lv_grad_dir_t value);		//设置背景下半部颜色填充方向
void lv_style_set_bg_main_stop(lv_style_t * style, lv_coord_t value);		//主色停止
void lv_style_set_bg_grad_stop(lv_style_t * style, lv_coord_t value);		//下半部色停止
void lv_style_set_bg_img_src(lv_style_t * style, const void * value);		//设置背景图片
void lv_style_set_bg_img_opa(lv_style_t * style, lv_opa_t value);			//设置背景图片透明度
void lv_style_set_bg_img_recolor(lv_style_t * style, lv_color_t value);		//设置背景图片重着色
void lv_style_set_bg_img_recolor_filtered(lv_style_t * style, lv_color_t value);//设置背景图片重着色过滤色
void lv_style_set_bg_img_recolor_opa(lv_style_t * style, lv_opa_t value);	//设置背景图片重着色透明度
void lv_style_set_bg_img_tiled(lv_style_t * style, bool value);				//设置背景图片平铺

用过上面的几个基函数lvgl封装了几个API

static inline void lv_style_set_pad_all(lv_style_t * style, lv_coord_t value);	//四边内边距
static inline void lv_style_set_pad_hor(lv_style_t * style, lv_coord_t value);	//水平内边距 左右相同
static inline void lv_style_set_pad_ver(lv_style_t * style, lv_coord_t value);	//竖直内边距 上下相同
static inline void lv_style_set_pad_gap(lv_style_t * style, lv_coord_t value);	//差距内边距 行列相同

三、示例

3.1、实现背景渐变

  实现背景双色透明显示,值得注意的是
lv_palette_lighten(LV_PALETTE_RED,1)、
lv_palette_darken(LV_PALETTE_RED,1)、
lv_palette_main(LV_PALETTE_BLUE) 、
  三个表示色彩程度不一样,lv_palette_lighten(LV_PALETTE_RED,1)、lv_palette_darken(LV_PALETTE_RED,1)可以表示一种颜色的深浅程度,根据第二个参数决定,数值最大5 值越大颜色越浅,lv_palette_main(LV_PALETTE_BLUE)只可以表示单色,当主色停止和渐变色停止的数值一样的时候就不会出现渐变显示。当lv_style_set_bg_main_stop 和 lv_style_set_bg_grad_stop不被设置的时候,表示默认的时候双色渐变的坐标更具渐变的方向从最小坐标值到坐标最大值的范围内变化。

/*************************************************
 *  函数名称 :  lv_style_bg 设置样式背景
 *  参    数 : 无
 *  函数功能 : 设置样式圆角、两个背景色的时候对应透明度
 *************************************************/
void lv_style_bg(void)
{
   static lv_style_t style;                        //创建style
   lv_style_init(&style);                          //初始化style
   lv_style_set_radius(&style,5);                  //设置样式的圆角

   lv_style_set_bg_opa(&style,LV_OPA_COVER);       //设置样式透明度
   lv_style_set_bg_color(&style,lv_palette_lighten(LV_PALETTE_RED,1));  //设置主背景颜色 调色板减轻,后面参数越高则也淡
   lv_style_set_bg_grad_color(&style,lv_palette_main(LV_PALETTE_BLUE)); //设置下半部背景颜色 主调色板
   lv_style_set_bg_grad_dir(&style,LV_GRAD_DIR_VER);                    //下半部背景颜色填充方向

   lv_style_set_bg_main_stop(&style,160);          //主色停止 作为渐变线的分界线          
   lv_style_set_bg_grad_stop(&style,190);          //渐变色停止 渐变值必须大于主色值,否则会被覆盖不能实现渐变

   lv_obj_t * obj = lv_obj_create(lv_scr_act());   //创建对象
   lv_obj_add_style(obj,&style,0);                 //将样式添加到对象中
   lv_obj_center(obj);                             //居中对象
}

  实现背景图片的显示,这个只是背景的图片设置,还可以在引用图片对象实现前景的图片显示,实现背景图套前景图的效果,还可以通过下面这两个API设置背景的颜色。
lv_style_set_bg_color(&style,lv_palette_lighten(LV_PALETTE_BLUE,1));
lv_style_set_bg_opa(&style,LV_OPA_50);

void lv_example_style_2_1(void)
{
    static lv_style_t style;                        //创建样式         
    lv_style_init(&style);                          //初始化样式
    lv_style_set_radius(&style, 5);                 //设置圆角半径
    
    LV_IMG_DECLARE(animimg001);                     //加载图片声明 .c文件的图片
    lv_style_set_bg_img_src(&style, &animimg001);	//设置背景图片
    lv_style_set_bg_img_opa(&style, LV_OPA_80); 	//设置背景图片透明度
    lv_style_set_bg_img_recolor(&style, lv_palette_main(LV_PALETTE_RED));//设置背景图片重着色
    lv_style_set_bg_img_recolor_opa(&style, LV_OPA_80);	//设置背景图片重着色透明度
    lv_style_set_bg_img_tiled(&style, false);			//设置背景图片平铺

    /*Create an object with the new style*/
    lv_obj_t* obj = lv_obj_create(lv_scr_act());   //创建对象
    lv_obj_add_style(obj, &style, 0);              //设置对象的样式
    lv_obj_set_size(obj,200,200);				   //设置对象的尺寸
    lv_obj_center(obj);                            //居中对象
}

在这里插入图片描述
4.2实现背景图片的显示
在这里插入图片描述

  • 14
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值