加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
animatedgifitem.cpp 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
编号001 提交于 2024-11-03 21:21 . init
#include "animatedgifitem.h"
AnimatedGifItem::AnimatedGifItem(const QString &fileName, QGraphicsItem *parent)
: UICanvasItemBase(parent), movie(new QMovie(fileName))
{
QObject::connect(movie, &QMovie::frameChanged, [this](int /*frame*/)
{
// 在每个新帧上触发重绘
this->update(); });
movie->start();
// this->setScale(5.0);
this->setY(1000);
this->setX(500);
}
AnimatedGifItem::~AnimatedGifItem()
{
delete movie;
}
QRectF AnimatedGifItem::boundingRect() const
{
return movie->currentPixmap().rect();
}
void AnimatedGifItem::customPaint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
auto pixmap = movie->currentPixmap();
// QPixmap scaledPixmap = pixmap.scaled(1000, 1000, Qt::KeepAspectRatio, Qt::SmoothTransformation);
painter->drawPixmap(0, 0, pixmap.width()*5, pixmap.height(), pixmap);
}
// void AnimatedGifItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
// {
// Q_UNUSED(option);
// Q_UNUSED(widget);
// auto pixmap = movie->currentPixmap();
// // QPixmap scaledPixmap = pixmap.scaled(1000, 1000, Qt::KeepAspectRatio, Qt::SmoothTransformation);
// painter->drawPixmap(0, 0, pixmap);
// // this->update();
// }
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化