[已解决]ESP-IDF:关于在LVGL中对图片使用LV_BLEND_MODE_ADDITIVE效果时加载不出来的解决办法

MCU:ESP32S3
CSDK:ESP-IDFV5.0.1
图形:LVGL8.3.5
  • 出现原因:使用别人移植好的框架一般没有这个问题,自己移植时不使用lv_conf.h文件配置而使用menuconfig时可能会遇到。如何知道自己有没有这个问题,只需要跑benchmark例程时看看自己七十多以后的效果是不是都加载不出来了。
  • 解决方法:需要在menuconfig中将LV_COLOR_SCREEN_TRANSP选项勾选,勾选该选项的作用为:启用更复杂的绘图例程来管理屏幕透明度。但是该项依赖于LV_COLOR_DEPTH_32,而我使用的屏幕为LV_COLOR_DEPTH_16,为此需要直接在kconfig文件中进行如下修改(如果你使用的是lv_conf.h文件直接设置,那就更简单了,直接找到该项设置即可):
    在这里插入图片描述
  • 即将原本的如下代码注释:
            bool "Enable more complex drawing routines to manage screens transparency."
            depends on LV_COLOR_DEPTH_32
            help
                Can be used if the UI is above another layer, e.g. an OSD menu or video player.
                Requires `LV_COLOR_DEPTH = 32` colors and the screen's `bg_opa` should be set to
                non LV_OPA_COVER value
  • 更改为:
            bool
            depends on LV_COLOR_DEPTH_16
            default y
  • 测试时如下图使用lv_obj_set_style_blend_mode进行测试,value值设置为LV_BLEND_MODE_ADDITIVE
    在这里插入图片描述
    该效果通常用于融合多层图画,由于色彩渐变等等原因,上层图片边缘并不能全部抠出,会有毛刺,放在下层图画上播放动画时会看起来很丑,使用这个效果时候边缘会看起来更平滑,会有色彩的过度,如下图电池充电图标动画,为五层图片重叠构成。三层粒子图片都使用了LV_BLEND_MODE_ADDITIVE,之后盖上两层波浪图案即可:
    请添加图片描述请添加图片描述
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值