QT中使用APNG
程序员文章站
2022-05-31 22:09:45
...
最近在做UI,要显示一个动画,本来一直用序列帧或者GIF的方式来实现的。
后来美术说能不能使用apng这种动画,因为这个可以省略大量的序列帧以缩小资源大小,并且可以减少大量的代码,用序列帧总是需要使用计时器之类的东西。
我就搜索了解决方案,还真有在github上有人提供了。
先说一下什么是apng:
APNG是一个基于PNG格式的位图动画格式图片,是 PNG 的位图动画扩展,可以实现 png 格式的动态图片效果,其诞生目的是为了替代老旧的 GIF 格式,但它目前并没有获得 PNG 组织官方的认可。
可以看看这个网址的东西来大致的了解一下
https://www.leiue.com/1652
如何在QT5.13.0里使用APNG呢,在github工程里有编译好的dll,我下载到自己网盘了
链接: https://pan.baidu.com/s/1bpV96B7nRinancvOBx3sDA 提取码: 9n62
本来以为放到QT的lib目下下就可以,没想到竟然不行。
不过后来在程序中主动加载后,就可以使用了。加载函数我写的为LoadPlugin(“apng.dll”)
QObject* LoadPlugin(QString pluginpath)
{
QFile file(pluginpath);
if (!file.exists())
return NULL;
QPluginLoader loader(pluginpath);
QObject *instance = loader.instance(); //
return instance;
}
//dll加载进来之后。就可以像加载gif一样加载就可以了,例如
QMovie* movie = new QMovie(":/wuji/Resources/mask.png", "apng");
QLabel->setMovie(movie);
movie->start();
这样就完美的使用apng动画。
github工程参考
https://github.com/Skycoder42/QtApng
上一篇: Linux中使用boost
下一篇: qt使用boost