版本为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()层,我都画了控件,但都看不见了。
请问这是什么情况,有没有解决的办法?感谢~