duilib支持apng,gif支持文字、背景、图片的file/source/dest/xtiled/ytiled/mask等

duilib官方库提供了个gif控件,用的是gdi+解析和绘制的,同时没有接入duilib控件本身的背景色,文本等绘制,包括图片的source/dest/xtiled/ytiled/mask等属性也都没有做支持。

可以满足基本的使用需求。

我需要一些效果比较好的动态图来做展示,gif显然不行,另外的动图就是webP和Apng,最决定先支持apng,webP后续有需求的话,再研究支持。

源码仓库地址:https://github.com/juhuaguai/duilib

其中关于gif和apng的改动有:

GIF控件:

1.gif控件重做,继承自Label控件,让它支持背景色和文本绘制。

2.gif控件移除掉gdi+的解析和绘制,改为duilib自带的stbimage去解析,生成每一帧的HBITMAP,在PaintImage时去绘制对应的帧,这样就融入了duilib的DoPaint体系,支持了背景色,文本等。

3.结合duilib里面的TDrawInfo结构体,让gif的背景支持bkimage="file='xxx.gif' sorce='x,x,x,x' dest='x,x,x,x' xtiled='true' ytiled='true' mask='ffxxxxxx'"等属性。

4.参考了button,基于gif控件做了gifbutton控件,即背景可以设置为动态图的按钮。

APNG控件:

1.apng控件重做,之前一版是基于libpng库的,新的代码直接移除了Libpng库,找了份支持apng的stbimage代码来解析。

2.在apng控件中完全重写了帧的解析处理,主要是参考libpng的例子。与gif一样,生成每一帧的HBITMAP(这个是已经处理过的完整的帧位图,不是apng里面直接解析出来还需要二次处理的帧)。

3.其他流程处理与gif一样了。

4.同样也做了支持apng的动画按钮控件。

 

最后,由于水平有限,可能会存在不足和bug,欢迎提建议和bug。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值