Visindigo::Widgets::PixmapCacheHelper Class
class Visindigo::Widgets::PixmapCacheHelperPixmapCacheHelper提供了一个在读取时自动创建QPixmap缓存的工具类. 详情...
| 头文件: | #include <PixmapCacheHelper> |
| 自以下版本: | Visindigo 0.13.0 |
公开成员函数
(自 Visindigo 0.13.0 引入) | ~PixmapCacheHelper() |
(自 Visindigo 0.13.0 引入) void | clearCache() |
(自 Visindigo 0.13.0 引入) QString | getCachePath() const |
(自 Visindigo 0.13.0 引入) QPixmap | getPixmap(const QString &path, const QSize &size = QSize(), bool keepAspectRatio = true) |
(自 Visindigo 0.13.0 引入) void | save() |
(自 Visindigo 0.13.0 引入) void | setCachePath(const QString &path) |
静态公开成员
(自 Visindigo 0.13.0 引入) Visindigo::Widgets::PixmapCacheHelper * | getInstance() |
详细说明
PixmapCacheHelper提供了一个在读取时自动创建QPixmap缓存的工具类。当你需要读取一个 QPixmap并对其进行缩放时,这个类就很有用,它会将缩放结果缓存起来,以便下次读取时直接使用缓存结果, 从而提高性能。对于同一张图片的不同缩放结果,PixmapCacheHelper会分别缓存它们,以便在需要时快速获取。
显然,如果你需要频繁以固定缩放比读取同一张图片(譬如文件浏览器中的缩略图),PixmapCacheHelper会非常有用。
你可以通过setCachePath方法设置缓存路径,如果不设置,则默认在内存中缓存,不会保存到磁盘。
为了提高IO性能,PixmapCacheHelper并不松散存储每个缩放位图,而是将多个位图拼合为一个大位图进行存储。每个 大位图的宽高都是2的幂次方,且不小于所需存储的最大缩放位图的宽高。每个大位图被划分为多个固定大小的瓦片, 每个瓦片可以存储一个缩放位图。当需要存储一个缩放位图时,PixmapCacheHelper会在现有的大位图中寻找一个空闲的瓦片来存储它, 如果没有合适的空闲瓦片,则会创建一个新的大位图来存储它。
Warning: 这类暂时不建议使用,目前仍然处于技术预览状态。
成员函数文档
[noexcept, since Visindigo 0.13.0] PixmapCacheHelper::~PixmapCacheHelper()
析构函数
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PixmapCacheHelper::clearCache()
清空缓存,删除所有缓存文件,如果没有设置缓存路径则只清空内存中的缓存。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QString PixmapCacheHelper::getCachePath() const
return 缓存路径,如果不设置则默认在内存中缓存,不会保存到磁盘。
这个function 从 Visindigo 0.13.0 开始支持。
[static, since Visindigo 0.13.0] Visindigo::Widgets::PixmapCacheHelper *PixmapCacheHelper::getInstance()
return PixmapCacheHelper实例
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] QPixmap PixmapCacheHelper::getPixmap(const QString &path, const QSize &size = QSize(), bool keepAspectRatio = true)
path 是图片路径 size 是缩放后的大小,如果为默认值则不进行缩放 keepAspectRatio 表示是否保持宽高比,默认为true。 如果图片不进行缩放,就不创建缓存。等同于直接调用QPixmap构造函数读取图片。 return Pixmap
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PixmapCacheHelper::save()
保存缓存到磁盘,如果没有设置缓存路径则不进行保存。
这个function 从 Visindigo 0.13.0 开始支持。
[since Visindigo 0.13.0] void PixmapCacheHelper::setCachePath(const QString &path)
path 缓存路径
设置缓存路径,如果不设置则默认在内存中缓存,不会保存到磁盘。 设置了缓存路径后,会尝试从该路径加载缓存,如果加载失败则会清空缓存并重新创建。
这个function 从 Visindigo 0.13.0 开始支持。