剛開始做的時候有一種無從下手的感覺,後來慢慢研究下來感覺也還可以,也可以做
一開始想着就是用雙緩存方式實現,想了兩種實現方法,一種想着將靜態圖拷貝一份,一張下移後顯示上一張,另一種就是將一張圖片裁剪,每次裁剪一部分,這樣循環顯示。
後來把第一種否掉了,使用了第二種
主要使用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();