ESP32 LVGL8.1 ——Style bg 设置样式背景 (Style 2)_lvgl 背景颜色值-程序员宅基地

技术标签: 交互  gui  LVGL 成长笔记  嵌入式  

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

一、样式背景设置简介

  本次主要讲述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实现背景图片的显示
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/believe666/article/details/121849062

智能推荐

一个python实现的kline-chart图表程序(一)_python使用kimi chart-程序员宅基地

文章浏览阅读230次。至于MA,MACD,VOL这些应该属于指标,可以从基础数据计算得来或是直接加载,当然可加载的还有其它一些指标,比如买卖点或是直线,射线,线段或是矩形什么的。最好能把这个框架高度模块化,然后想计算什么指标直接加进去,或是做个什么插件,嗯,插件这一块明显还不熟,先做到高度封装的Kline再说。起因是想研究量化交易,然后核查算法的落角点,比如哪些指标的组合可以入场做单,没有一个形象化的工具算法写起来总是感觉差强人意。初步想法是需要一个数据串,里面记录一组开高低收量,然后打开程序后可以将这个基础数据显示成K线。_python使用kimi chart

报错cv2.error: OpenCV(4.1.2) error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite'-程序员宅基地

文章浏览阅读1.3w次。Traceback (most recent call last):File "D:/FER/FacePP/decode_json.py", line 174, in <module>demonstrate(r'C:\Users\user-pc\Documents\Dataset\FER\JsonFiles\FacePP\BBQNR\S3\angry\13342.jso..._error: (-215:assertion failed) !_img.empty() in function 'cv::imwrite

【业务架构】业务驱动的推荐系统相关技术总结_推荐系统需要哪些技术-程序员宅基地

文章浏览阅读1.2w次,点赞71次,收藏92次。推荐系统是一种基于用户历史行为和属性信息为用户推荐个性化内容的技术。而业务驱动的推荐系统,是指根据业务需求,将推荐系统集成进业务流程中,通过推荐系统提高业务效率、提升用户体验等目的。以下是一些相关实现技术。_推荐系统需要哪些技术

全面的学习 游戏外挂 编程开发 视频教程+源代码_有什么外挂学习网站?-程序员宅基地

文章浏览阅读1w次,点赞5次,收藏25次。 有游戏分析,CALL基址分析,封包分析,外挂制作 ,逆向调试,过驱动保护等课程课程大网如下 详情见:郁金香外挂教学网:http://bbs.yjxsoft.net VC++外挂教程大纲(另有delphi版 大致相同) 程安排,暂定,有可能会实时修改 开发环境:VC++6.0 分析工具_有什么外挂学习网站?

jQuery点击返回上一页效果_jq 点击上一个-程序员宅基地

文章浏览阅读428次。jQuery点击返回上一页效果前端部分,写入id<span id="copy"></span>js部分,获取id $("#copy").click(function () { window.history.go(-1) })_jq 点击上一个

使用Audacity软件分析浊音、清音爆破音的时域及频域特性。_audacity 如何测432赫兹-程序员宅基地

文章浏览阅读93次。使用Audacity软件分析浊音、清音爆破音的时域及频域特性。陈玥作业内容1、录制浊音、清音、爆破音浊音m清音s爆破音p2、时域分析:浊音m浊音在时域显示一定的周期性。清音s清音在时域有较强的随机性。爆破音p爆破音在较短时间内幅度有明显波动。3、频域分析:浊音m浊音整体能量较大且主要集中在低中频部分,具有共振峰特性。清音s能量主要集中在低高频部分,中频区较弱。爆破音p能量从低频到高频递减。(图为我多次发出p音所以有两次递减)。..._audacity 如何测432赫兹

随便推点

Android12 MTK平台 禁用SCTP协议_android sntp 禁用-程序员宅基地

文章浏览阅读831次,点赞22次,收藏23次。【代码】Android12 MTK平台 禁用SCTP协议。_android sntp 禁用

2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛赛道 赛道 B:北京移动用户体验影响因素研究_影响客户语音业务和上网业务满意度的主要因素-程序员宅基地

文章浏览阅读543次,点赞4次,收藏5次。详细介绍采用信息增益率、XGBoost、随机森林综合筛选特征。_影响客户语音业务和上网业务满意度的主要因素

哈夫曼码编/译码系统-程序员宅基地

文章浏览阅读991次,点赞22次,收藏24次。编写一个哈夫曼码的编/译码系统,实现对输入的文本信息自动统计并依此为依据建立一个哈夫曼码的编/译码系统。

Revisiting Salient Object Detection: Simultaneous Detection, Ranking, and Subitizing of Multiple Sal_salient object ranking-程序员宅基地

文章浏览阅读1.2k次,点赞2次,收藏3次。问题:作者认为,显著性目标检测领域迄今为止的工作解决的是一个相当病态的问题。即不同的人对于什么是显著性目标没有一个普遍的一致意见。这意味着一些目标会比另一些目标更加显著,并且不同的显著性目标中存在着一个相对排名。本文方法:本文方法解决了考虑了相对排名这个更普遍的问题,并且提出了适合于衡量该问题的数据与度量方法,本文解决方案是基于相对显著性和分段式细化的分层表示的深度网络。该网络也可以解..._salient object ranking

成功解决Failed to import transformers.models.vision_encoder_decoder.modeling_vision_encoder_decoder beca_runtimeerror: failed to import modelscope.utils.hf-程序员宅基地

文章浏览阅读1.9k次,点赞3次,收藏3次。​成功解决Failed to import transformers.models.vision_encoder_decoder.modeling_vision_encoder_decoder because of the following error (look up to see its traceback):目录解决问题解决思路解决方法解决问题RuntimeError: Failed to import transformers.models.vision_encoder_d_runtimeerror: failed to import modelscope.utils.hf_util because of the follo

BeanDefinitionRegistryPostProcessor详解-程序员宅基地

文章浏览阅读8.8k次,点赞5次,收藏22次。接口该接口继承了BeanFactoryPostProcessor接口,此接口中只有一个方法,就是postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)代码public interface BeanDefinitionRegistryPostProcessor extends BeanFactoryPostProcessor { /** * Modify the application context's intern_beandefinitionregistrypostprocessor

推荐文章

热门文章

相关标签