前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >duilib支持apng,gif支持文字、背景、图片的file/source/dest/xtiled/ytiled/mask等

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

作者头像
大菊观
发布2021-01-05 12:22:28
1K0
发布2021-01-05 12:22:28
举报

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。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-12-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档