大家好,请教个问题啊。
之前用awtk做的项目,GUI层在fb1用的RGB565格式,视频层fb0。GUI叠加在视频层上,用colorkey透过去。
现在问题是colorkey只是一种色,不能实现半透明的效果,会有如下图的现像:
现在送样机,被客户退回了,糗大了...被老板批了...
所以,现在想用ARGB8888来做,测试了一下:
1.电脑制作一张全透明的png图片
2.win_cctv = window_create(NULL,0,0,0,0);
3.widget_use_style(win_cctv,"全透.png");
4.然后在win_cctv上面画图标和字符...
但显示的结果让我一头雾水,发现awtk显示出来的是在前一个界面的基础上叠加全透的png,根本就没有全透到底下的视频层!!
晕了...
猜测,应该是awtk用前一个界面为背景,将全透的png融合进去了....前一个界面没有透明,所以融合的结果也是一点没透明!
我测试过,如果是直接对fb1写ARGB8888的数据是可以半透过去的!说明fb1驱动是没问题了。
请教各位,有没有做过类似的应用?
如何处理视频层与UI层的叠加问题?
awtk此情况下,应该怎样用啊?
谢谢!
离线
谢谢回复!
我看了下,发现mutable_image是通过软件将视频层的GUI层融合的?
这样的话不是很适合啊, 我的平台双核A7,有8路摄像头图象需要同时显示,如果软件拼图融合,太耗时间了!分辨率1024x600。
离线
参照上面的文档说明,即使不用mutable_image控件,也要定义WITH_LCD_CLEAR_ALPHA宏,以支持背景色为透明的混色算法。
谢谢!
仔细看了awtk文档,发现我需要的是这个:
”2. 直接刷硬件方法
如果嵌入式支持多线程的话,可以使用一条线程支持刷到其中一个硬件图层中,然后另外一条线程给 AWTK 运行 GUI。
这个方法的好处是视频的刷新率不会受到 AWTK 的帧率影响,就算 AWTK 的 GUI 很卡,也不会导致视频卡顿的问题,如果硬件图层支持各种格式的透传的话,例如视频数据为 YUV 的话,就可以省下 YUV 格式转换的消耗问题,因为 mutable_image 控件只支持 RGBA8888, BGRA8888,RGB888,BGR888,RGB565,BGR565。“
但是,我在awtk_config.py里面定义了COMMON_CCFLAGS=COMMON_CCFLAGS+' -DWITH_LCD_CLEAR_ALPHA' ,
重新编译运行,结果是一样的...
全awtk代码收索关键字WITH_LCD_CLEAR_ALPHA,也没看到有使用到。是不是我哪里搞错了?
离线
' -DWITH_LCD_CLEAR_ALPHA' 这里后面最好要留个空格。
两年前就有WITH_LCD_CLEAR_ALPHA这个宏了,你的代码没那么旧吧。
加一空格也是一样...
awtk我已经更新到1.5的了
离线