soui中apng 图像解码器解码图片后像素格式研究

本文研究了soui界面库如何实现透明效果,特别是在GDI模式下利用UpdateLayeredWindow和AlphaBlend技术。作者发现soui中的apng解码模块与其他解码模块在像素格式上存在差异,不是MSDN所述的argb格式,而是bgra格式。通过实验,作者证实apng可以解码为argb格式,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

     soui是一个非常牛逼的界面库,里面对图片透明有着很好的支持,这也是我喜欢soui的一个重要原因。soui中不仅可以设置主窗口半透明,而且还可以设置soui子窗口半透明,两者的设置都非常的简单。只需要在xml中设置下属性就好了。

     但我一直好奇,透明技术是如何实现的。看了下soui的源码,在渲染引擎为gdi模式下,透明实现用了UpdateLayeredWindow和AlphaBlend技术,两者都有一个共同的BLENDFUNCTION 参数,这个结构体对透明有着重要的影响。

    前几天在msdn上面找到了一个Alpha Blending a Bitmap(Windows)的一段 代码,下面是该原文地址的连接:

            https://msdn.microsoft.com/en-us/library/windows/desktop/dd183353%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

   在注释里面我发现了这样一句话:msdn意思是说32位位图像素格式是0xaarrggbb格式的。我尝试修改了像素值发现确实是这样。

	// in top window area, constant alpha = 50%, but no source alpha 
	// the color format for each pixel is 0xaarrggbb  
	// set all pixels to blue and set source alpha to zero 

   soui中还有一个非常牛逼的地方就是,支持多种图像解码模块,比如stb,wic,apng

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值