QT静态图片实现数字雨

刚开始做的时候有一种无从下手的感觉,后来慢慢研究下来感觉也还可以,也可以做
一开始想着就是用双缓存方式实现,想了两种实现方法,一种想着将静态图拷贝一份,一张下移后显示上一张,另一种就是将一张图片裁剪,每次裁剪一部分,这样循环显示。
后来把第一种否掉了,使用了第二种

主要使用QPixmap,QTimer,QPalette,QPainter类

主要核心代码就是

// m_curPixmap 存放的是当前显示的图片
m_tmpPixmap = QPixmap(m_curPixmap.size());
QPainter pPainter(&m_tmpPixmap);

samllPixmap = m_curPixmap.copy(0, m_iPixmapHeight - m_iPixmapUpdate, m_iPixmapWidth, m_iPixmapUpdate);             // 小图片
bigPixmap = m_curPixmap.copy(0, 0, m_iPixmapWidth, m_iPixmapHeight - m_iPixmapUpdate);                             // 大图片

pPainter.drawPixmap(0, 0, m_iPixmapWidth, m_iPixmapUpdate, samllPixmap);
pPainter.drawPixmap(0, m_iPixmapUpdate, m_iPixmapWidth, m_iPixmapHeight - m_iPixmapUpdate, bigPixmap);
m_curPixmap = m_tmpPixmap;

m_mainBackGround.setBrush(QPalette::Window,
                          QBrush(m_curPixmap.scaled(     // 缩放背景图
                          this->size(),
                          Qt::IgnoreAspectRatio,
                          Qt::SmoothTransformation)));    // 使用平滑的缩放方式
setPalette(m_mainBackGround);
update();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值