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