请教关于透明屏幕的疑问

版本为8.3 ,我想将整个屏幕设置为透明,显示的最底层是VIDEO信号(这个和LVGL无关,是其他库实现的),用LVGL在VIDEO信号上面叠加一些控件显示,即OSD。

按官方的说明:

  • lv_conf.h中启用LV_COLOR_SCREEN_TRANSP
  • 请务必使用LV_COLOR_DEPTH 32
  • 将屏幕不透明度设置为“LV_OPA_TRANSP”,例如使用lv_obj_set_style_local_bg_opa(lv_scr_act(), LV_OBJMASK_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_TRANSP)
  • 使用 lv_disp_set_bg_opa(NULL, LV_OPA_TRANSP); 将显示不透明度设置为 LV_OPA_TRANSP

按上面的描述,我设置如下:
#define LV_COLOR_DEPTH 32
#define LV_COLOR_SCREEN_TRANSP 1
lv_obj_set_style_bg_opa(lv_scr_act(), LV_OPA_TRANSP, LV_PART_MAIN);
lv_disp_set_bg_opa(NULL, LV_OPA_TRANSP);

结果在lv_scr_act()上面画东西,整个屏幕花屏了,现象是比如画一条直线,会出现满屏的线。
如果不设置上面的透明,可以正常显示。

然后我增加了个设置lv_disp_get_default()->driver->screen_transp = 1;===> 这时屏幕上只显示了VIDEO信号图像,LVGL画出的所有东西都消失了。lv_layer_sys()层和lv_scr_act()层,我都画了控件,但都看不见了。

请问这是什么情况,有没有解决的办法?感谢~

你好,解决了吗?遇到一样的问题