欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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