您尚未登录。

楼主 # 2025-09-29 17:18:43

ChouBangYing
会员
注册时间: 2018-07-26
已发帖子: 4
积分: 4

多图层叠加,video层不可见,怎么处理

我将d213ecv的luban sdk demo中视频播放页面的bg_dark替换成一个带一块全透明矩形的png图片,发现运行起来透明区域变成白色了,video图层的内容完全不可见被ui层遮挡;这是我带中间矩形区域全透明的png图片,main.png代码修改仅仅修改这一行
//lv_img_set_src(img_bg, FAKE_IMAGE_NAME(bg_dark));
lv_img_set_src(img_bg, LVGL_PATH(main.png));
运行效果如下图所示:fe737eded8f93f9412a03467e68bef5f.jpg

最近编辑记录 ChouBangYing (2025-09-29 17:19:59)

离线

楼主 #1 2025-09-29 20:40:24

ChouBangYing
会员
注册时间: 2018-07-26
已发帖子: 4
积分: 4

Re: 多图层叠加,video层不可见,怎么处理

参考https://whycan.com/t_9283.html,添加三行代码
+          lv_style_init(&style_scr_act);
+          lv_style_set_bg_opa(&style_scr_act, LV_OPA_TRANSP);
+          lv_obj_add_style(lv_scr_act(), &style_scr_act, 0);

            lv_img_set_src(img_bg, LVGL_PATH(main.png));
需要设置一下lvgl的背景为透明,虽然矩形框为透明,但是背景不透明,所以显示不出来。
显示如下所示,透明矩形区域正常显示了video层
2ccb9c868e3a2ee64714c468b22a7ecf.jpg
但是它那个.fake的bg_dark并没有设这个,也行,不晓得为啥子

离线

#3 2025-10-21 15:43:24

Gui小菜鸡
会员
注册时间: 2024-06-05
已发帖子: 6
积分: 11

Re: 多图层叠加,video层不可见,怎么处理

您提到的这个情况,是因为我们的显示系统采用了分层渲染机制。简单来说,画面由底层的视频层(video layer)和上层的UI层(UI layer)叠加合成。

*   **根本原因**:UI层默认会覆盖在视频层之上。在最终合成时,系统会计算每个层级的像素,特别是UI层每个像素的Alpha(透明度)值。如果UI层某个区域的Alpha值不为0(即不完全透明),它就会遮挡住下层的视频内容。
*   **问题分析**:当您叠加一张透明的PNG图片时,虽然图片本身有透明区域,但UI层上该位置**原本已经存在不透明的UI元素**。在合成过程中,不透明的UI元素像素与您添加的透明PNG像素进行混合,结果仍然是**不透明**的,因此无法透出下层的视频画面。

**核心要点总结**:要让视频透过UI层显示出来,关键在于确保UI层上对应区域的**最终合成结果**是透明的。仅仅放置一张透明图片,如果该区域已被其他不透明的UI元素占据,是无法实现透显效果的。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn