directfb png透明色问题
来源:互联网 发布:软件培训机构知乎 编辑:程序博客网 时间:2024/05/09 13:57
本文转载自:http://blog.csdn.net/j6915819/article/details/6068545
directfb是一个做嵌入式的轻型库,对此,我不做太多说明,网上关于基础介绍的内容比较多了!
我要讲的是关于directfb插入图片透明色的问题,关于怎么制作成透明色的png,网络上有很多这方面的资料,用ps.....
如下图所示:
这是运用常规的方法做的结果。
而我们想要的是以下这种结果:
我们打开directfb,查看API中会发现
DFBResult RenderTo ( IDirectFBImageProvider *thiz, IDirectFBSurface *destination, const DFBRectangle *destination_rect);
下面有这样的说明:
If the image file has an alpha channel it is rendered with alpha channel if the destination surface is of the ARGB pixelformat. Otherwise, transparent areas are blended over a black background.
我们通过上面的描述,我们可以清楚的知道,我们的PNG图片是有alpha通道的,而我们的surface没有alpha通道时,图片的背景部分会被染黑。
解决方案呢:
DFBSurfaceDescription dsc;
IDirectFBImageProvider *provider;
dsc.flags = DSDESC_PIXELFORMAT| DSDESC_WIDTH | DSDESC_HEIGHT ;
dsc.pixelformat = DSPF_ARGB; //我们在这个地方设置其像素格式
dsc.width = size;
dsc.height = size;
设置完以后:
DFBCHECK (dfb->CreateImageProvider (dfb,str, &provider));
DFBCHECK (provider->RenderTo (provider, logo, NULL));
provider->Release (provider);
primary->SetBlittingFlags( primary ,DSBLIT_BLEND_ALPHACHANNEL );
//在这一行我们需要设置blit格式,然后再对surface进行blit操作
DFBCHECK (primary->Blit (primary, logo, NULL, posX,posY));
总结:这个问题主要是我们对alpha通道没有一个直观清晰的认识,具体我们可以参考晚上的一些资料。关于alpha通道,在directfb源码束中有一个df_porter该例子对alpha进行了一个较好的说明:
其中有著名的Porter/Duff 定理,大家可以做仔细研究。
- directfb png透明色问题
- directfb png透明色问题
- IE6 PNG 透明问题
- png 透明的一些问题
- IE6不支持PNG透明问题
- IE6下png透明的问题
- ie6处理png透明图片问题
- 解决IE6下PNG透明问题
- 解决ie6不支持png透明问题
- 网站中的PNG图片透明问题
- 彻底解决 PNG图片透明的问题!
- IE6 PNG图片透明的问题
- 解决IE6 png图片透明问题
- 解决IE6支持PNG图片透明问题
- ie6下background png 透明问题
- IE6下png图片透明问题
- png透明
- png透明
- Oracle 数据库导出
- BCB控件使用问题
- iOS 开启ios7自带的滑动左侧返回上一级
- SyntaxError: 语法错误 解决方案 jquery ajax 直接反回json对象
- 《Java特种兵 上册》勘误、问答、反馈、心得
- directfb png透明色问题
- zend framework 2f安装
- 发表是最好的记忆
- oracle中用户删除不了,提示“无法删除当前已连接的用户”
- poj 3735 大数量重复操作问题(矩阵快速幂)
- IFFT 的实现
- Android应用程序签名详解
- WattUp:真正的无线充电技术,可在4.6米内充电
- vb6的注释功能